Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using BenchmarkDotNet.Attributes;
- using BenchmarkDotNet.Running;
- namespace LinqBench
- {
- //[MemoryDiagnoser]
- public class MemoryBenchmarkerDemo
- {
- [Benchmark]
- public int StupidTest()
- {
- int[] nums = { -2, -1, -1, 1, 2, 3, 4, 7, 10, 15, 20, 21, 22, 22, 25, 30 };
- var result = 0;
- for (var i = 0; i < 1000000; i++)
- {
- nums[^1] += 1;
- result = MaximumCount(nums);
- }
- return result;
- }
- public int MaximumCount(int[] nums)
- {
- return Math.Max(
- nums.Count(x => x > 0),
- nums.Count(x => x < 0));
- }
- [Benchmark]
- public int StupidTest2()
- {
- int[] nums = { -2, -1, -1, 1, 2, 3, 4, 7, 10, 15, 20, 21, 22, 22, 25, 30 };
- var result = 0;
- for (var i = 0; i < 1000000; i++)
- {
- nums[^1] += 1;
- result = MaximumCount2(nums);
- }
- return result;
- }
- public int MaximumCount2(int[] nums)
- {
- return Math.Max(
- nums.MyCount(x => x > 0),
- nums.MyCount(x => x < 0));
- }
- }
- file static class Ex
- {
- public static int MyCount(this int[] nums, Func<int, bool> preficate)
- {
- var count = 0;
- foreach (var num in nums)
- {
- if (preficate(num))
- count++;
- }
- return count;
- }
- }
- internal class Program
- {
- private static void Main(string[] args)
- {
- var summary = BenchmarkRunner.Run<MemoryBenchmarkerDemo>();
- }
- }
- }
- .NET SDK 7.0.403
- [Host] : .NET 7.0.13 (7.0.1323.51816), X64 RyuJIT AVX2
- DefaultJob : .NET 7.0.13 (7.0.1323.51816), X64 RyuJIT AVX2
- | Method | Mean | Error | StdDev |
- |------------ |----------:|---------:|---------:|
- | StupidTest | 192.31 ms | 0.640 ms | 0.534 ms |
- | StupidTest2 | 64.92 ms | 0.272 ms | 0.227 ms |
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement