-
Notifications
You must be signed in to change notification settings - Fork 0
LINQ
Rian Stockbower edited this page Feb 19, 2025
·
2 revisions
The basic pattern is:
[Benchmark]
public int FirstLarge()
=> _largeNumbers.First(n => n == 667);
[Benchmark]
public int WhereFirstLarge()
=> _largeNumbers.Where(n => n == 667).First();
And then repeating with Single()
, SingleOrDefault()
, and repeating again with a smaller array of numbers.
Method | Mean | Error | StdDev | Gen0 | Allocated | Speedup % |
---|---|---|---|---|---|---|
FirstLarge | 655.87 ns | 41.464 ns | 2.273 ns | 0.0038 | 32 B | |
WhereFirstLarge | 405.15 ns | 4.167 ns | 0.228 ns | 0.0057 | 48 B | 38.2% |
FirstOrDefaultLarge | 642.73 ns | 212.126 ns | 11.627 ns | 0.0038 | 32 B | |
WhereFirstDefaultLarge | 405.38 ns | 3.845 ns | 0.211 ns | 0.0057 | 48 B | 37.0% |
SingleLarge | 951.95 ns | 51.710 ns | 2.834 ns | 0.0038 | 32 B | |
WhereSingleLarge | 606.69 ns | 128.156 ns | 7.025 ns | 0.0057 | 48 B | 36.3% |
SingleOrDefaultLarge | 948.28 ns | 15.881 ns | 0.870 ns | 0.0038 | 32 B | |
WhereSingleDefaultLarge | 604.21 ns | 31.579 ns | 1.731 ns | 0.0057 | 48 B | 36.3% |
FirstSmall | 32.76 ns | 20.769 ns | 1.138 ns | 0.0038 | 32 B | |
WhereFirstSmall | 26.84 ns | 0.221 ns | 0.012 ns | 0.0057 | 48 B | 18.1% |
FirstOrDefaultSmall | 28.50 ns | 3.729 ns | 0.204 ns | 0.0038 | 32 B | |
WhereFirstDefaultSmall | 26.57 ns | 0.048 ns | 0.003 ns | 0.0057 | 48 B | 6.8% |
SingleSmall | 49.65 ns | 12.350 ns | 0.677 ns | 0.0038 | 32 B | |
WhereSingleSmall | 38.79 ns | 0.317 ns | 0.017 ns | 0.0057 | 48 B | 21.9% |
SingleOrDefaultSmall | 48.62 ns | 1.724 ns | 0.095 ns | 0.0038 | 32 B | |
WhereSingleDefaultSmall | 38.81 ns | 0.868 ns | 0.048 ns | 0.0057 | 48 B | 20.2% |