Advertisement
mquinlan

ParamsBenchmark

Apr 6th, 2025 (edited)
272
0
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.26 KB | Software | 0 0
  1. using BenchmarkDotNet.Attributes;
  2. using BenchmarkDotNet.Running;
  3.  
  4. namespace ParamsBench;
  5.  
  6. public class Program
  7. {
  8.     [Benchmark]
  9.     public long ParamsArrayForEachTest()
  10.         => ParamsArrayForEach(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40);
  11.    
  12.     [Benchmark]
  13.     public long ParamsArraySumTest()
  14.         => ParamsArraySum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40);
  15.    
  16.     [Benchmark]
  17.     public long ParamsROSpanTest()
  18.         => ParamsROSpan(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40);
  19.    
  20.     [Benchmark]
  21.     public long ParamsIEnumerableForEachTest()
  22.         => ParamsIEnumerableForEach(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40);
  23.    
  24.     [Benchmark]
  25.     public long ParamsIEnumerableSumTest()
  26.         => ParamsIEnumerableSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40);
  27.    
  28.     private static long ParamsArrayForEach(params int[] values)
  29.     {
  30.         var result = 0L;
  31.         foreach (var value in values) result += (long)value * 10;
  32.         return result;
  33.     }
  34.    
  35.     private static long ParamsArraySum(params int[] values)
  36.         => values.Sum(n => (long)n * 10);
  37.  
  38.     private static long ParamsROSpan(params ReadOnlySpan<int> values)
  39.     {
  40.         var result = 0L;
  41.         foreach (var value in values) result += (long)value * 10;
  42.         return result;
  43.     }
  44.  
  45.     private static long ParamsIEnumerableForEach(params IEnumerable<int> values)
  46.     {
  47.         var result = 0L;
  48.         foreach (var value in values) result += (long)value * 10;
  49.         return result;
  50.     }
  51.    
  52.     private static long ParamsIEnumerableSum(params IEnumerable<int> values)
  53.         => values.Sum(n => (long)n * 10);
  54.  
  55.     private static void Main()
  56.     {
  57.         _ = BenchmarkRunner.Run<Program>();    
  58.     }
  59. }
Advertisement
Comments
  • mquinlan
    1 day
    Comment was deleted
  • mquinlan
    18 hours
    # text 0.46 KB | 0 0
    1. | Method | Mean | Error | StdDev |
    2. |----------------------------- |---------:|---------:|---------:|
    3. | ParamsArrayForEachTest | 25.70 ns | 0.162 ns | 0.151 ns |
    4. | ParamsArraySumTest | 68.56 ns | 0.199 ns | 0.167 ns |
    5. | ParamsROSpanTest | 13.71 ns | 0.064 ns | 0.060 ns |
    6. | ParamsIEnumerableForEachTest | 59.47 ns | 0.193 ns | 0.161 ns |
    7. | ParamsIEnumerableSumTest | 73.70 ns | 0.049 ns | 0.044 ns |
Add Comment
Please, Sign In to add comment
Advertisement