@AndriySvyryd ?
@roji Would it be possible to compare results for this test between 2.0 and 3.x?
Sure, if we have a benchmark for it we should be able to run it against 2.x and against 3.x and compare. Catch me tomorrow or Friday and we can look at it together.
@roji ran the benchmark and master is better than 2.0 in both runtime and memory allocations
Here are the 2.0 vs. master (3d94a7dcd5aa0cc5568a62945affa85bfc56c382) results, for the record:
BenchmarkDotNet=v0.11.3, OS=ubuntu 19.10
Intel Core i7-9750H CPU 2.60GHz, 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=5.0.100-alpha1-015536
[Host] : .NET Core 2.0.9 (CoreCLR 4.6.0.0, CoreFX 4.6.26614.01), 64bit RyuJIT
Toolchain=InProcessToolchain
| Method | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|------------------- |---------:|----------:|----------:|------------:|------------:|------------:|--------------------:|
| ToList | 18.84 ms | 0.3264 ms | 0.3053 ms | 187.5000 | 62.5000 | - | 1.23 MB |
| FilterOrderProject | 23.65 ms | 0.5232 ms | 0.6228 ms | 375.0000 | 93.7500 | - | 2.4 MB |
| MultipleJoins | 95.60 ms | 1.3481 ms | 1.1257 ms | 1333.3333 | 500.0000 | - | 8.79 MB |
BenchmarkDotNet=v0.11.3, OS=ubuntu 19.10
Intel Core i7-9750H CPU 2.60GHz, 1 CPU, 12 logical and 6 physical cores
.NET Core SDK= 3.0.100 [/usr/share/dotnet/sdk]
[Host] : .NET Core 5.0.0-alpha.1.19551.1 (CoreCLR 5.0.19.52501, CoreFX 5.0.19.53113), 64bit RyuJIT
Toolchain=InProcessToolchain
| Method | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|------------------- |---------:|----------:|----------:|------------:|------------:|------------:|--------------------:|
| ToList | 13.86 ms | 0.2721 ms | 0.3988 ms | 156.2500 | 78.1250 | - | 975.95 KB |
| FilterOrderProject | 12.70 ms | 0.2509 ms | 0.2789 ms | 171.8750 | 46.8750 | - | 1113.04 KB |
| MultipleJoins | 84.36 ms | 0.3289 ms | 0.3077 ms | 1000.0000 | 500.0000 | - | 6637.03 KB |
Very nice!
Most helpful comment
Here are the 2.0 vs. master (3d94a7dcd5aa0cc5568a62945affa85bfc56c382) results, for the record:
2.0
| Method | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|------------------- |---------:|----------:|----------:|------------:|------------:|------------:|--------------------:|
| ToList | 18.84 ms | 0.3264 ms | 0.3053 ms | 187.5000 | 62.5000 | - | 1.23 MB |
| FilterOrderProject | 23.65 ms | 0.5232 ms | 0.6228 ms | 375.0000 | 93.7500 | - | 2.4 MB |
| MultipleJoins | 95.60 ms | 1.3481 ms | 1.1257 ms | 1333.3333 | 500.0000 | - | 8.79 MB |
master (3d94a7dcd5aa0cc5568a62945affa85bfc56c382)
| Method | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|------------------- |---------:|----------:|----------:|------------:|------------:|------------:|--------------------:|
| ToList | 13.86 ms | 0.2721 ms | 0.3988 ms | 156.2500 | 78.1250 | - | 975.95 KB |
| FilterOrderProject | 12.70 ms | 0.2509 ms | 0.2789 ms | 171.8750 | 46.8750 | - | 1113.04 KB |
| MultipleJoins | 84.36 ms | 0.3289 ms | 0.3077 ms | 1000.0000 | 500.0000 | - | 6637.03 KB |