Skip to content

Commit 25f5c60

Browse files
authored
Implement Visitor concept (#82)
* [Visitor] Create interface and naive implementation. * Pass Visitor by ref * Improve some Visit methods * Add PooledListVisitor * Add Visitor in ToListComparison. * Change Visit interface and expose exit status. * implement visit on some enumerable. * WIP Benchmark * Add some benchmark * [Sum] use visitor for sum. * Fix compilation * Use ref for Dictionary in Visit * ficx compilation. * WIP Add bench on ToArrayOnArraySelect with visitor. * Fix compilation. * Update benchmark * fix tests. * remove IDirectStructCollection * Update benchmark * [ToArray] use visitor. * [ToList] use ToArray for ToList * housekepping * Update benchmark
1 parent cb9e75f commit 25f5c60

File tree

68 files changed

+2572
-620
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2572
-620
lines changed

Documents/BenchmarksResults/ArrayOfBigStructSum.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66
### Results:
77
``` ini
88

9-
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.19041
10-
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
11-
.NET Core SDK=3.1.402
12-
[Host] : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
13-
DefaultJob : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
9+
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.19042
10+
Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
11+
.NET Core SDK=5.0.100-preview.7.20366.6
12+
[Host] : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT
13+
DefaultJob : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT
1414

1515

1616
```
17-
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
18-
|---------------------- |-----------:|---------:|---------:|------:|-------:|------:|------:|----------:|
19-
| ForSum | 613.3 ns | 1.19 ns | 1.06 ns | 0.10 | - | - | - | - |
20-
| SysEnumerableSum | 5,982.1 ns | 10.64 ns | 8.89 ns | 1.00 | 0.0076 | - | - | 32 B |
21-
| StructSum | 3,675.6 ns | 56.62 ns | 52.96 ns | 0.61 | 0.0076 | - | - | 32 B |
22-
| RefStructSum | 2,003.0 ns | 4.87 ns | 4.56 ns | 0.33 | 0.0076 | - | - | 32 B |
23-
| ZeroAllocStructSum | 2,275.9 ns | 42.85 ns | 35.79 ns | 0.38 | - | - | - | - |
24-
| ZeroAllocRefStructSum | 766.0 ns | 1.32 ns | 1.24 ns | 0.13 | - | - | - | - |
17+
| Method | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
18+
|---------------------- |-----------:|---------:|----------:|------:|--------:|-------:|------:|------:|----------:|
19+
| Handmaded | 799.6 ns | 4.87 ns | 4.55 ns | 0.14 | 0.00 | - | - | - | - |
20+
| SysEnumerableSum | 5,861.1 ns | 34.26 ns | 28.61 ns | 1.00 | 0.00 | - | - | - | 32 B |
21+
| StructSum | 3,253.7 ns | 30.06 ns | 28.12 ns | 0.55 | 0.01 | 0.0038 | - | - | 32 B |
22+
| RefStructSum | 1,886.6 ns | 22.74 ns | 18.99 ns | 0.32 | 0.00 | 0.0057 | - | - | 32 B |
23+
| ZeroAllocStructSum | 2,337.6 ns | 46.23 ns | 110.75 ns | 0.38 | 0.02 | - | - | - | - |
24+
| ZeroAllocRefStructSum | 716.5 ns | 6.18 ns | 5.78 ns | 0.12 | 0.00 | - | - | - | - |

Documents/BenchmarksResults/ArrayOfClassSum.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@
66
### Results:
77
``` ini
88

9-
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.19041
9+
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
1010
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
11-
.NET Core SDK=3.1.402
12-
[Host] : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
13-
DefaultJob : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
11+
.NET Core SDK=5.0.101
12+
[Host] : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
13+
DefaultJob : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
1414

1515

1616
```
17-
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
18-
|----------------- |-----------:|---------:|---------:|------:|-------:|------:|------:|----------:|
19-
| SysSum | 515.2 ns | 1.41 ns | 1.32 ns | 0.09 | - | - | - | - |
20-
| SysEnumerableSum | 5,782.8 ns | 18.35 ns | 17.16 ns | 1.00 | 0.0076 | - | - | 48 B |
21-
| StructSum | 1,745.9 ns | 2.49 ns | 2.33 ns | 0.30 | - | - | - | - |
17+
| Method | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
18+
|------------------- |-----------:|----------:|----------:|------:|--------:|-------:|------:|------:|----------:|
19+
| Handmaded | 554.7 ns | 11.12 ns | 16.98 ns | 0.07 | 0.00 | - | - | - | - |
20+
| SysEnumerableSum | 7,922.7 ns | 158.48 ns | 330.81 ns | 1.00 | 0.00 | - | - | - | 48 B |
21+
| StructSum | 3,192.7 ns | 62.72 ns | 67.11 ns | 0.40 | 0.02 | 0.0153 | - | - | 64 B |
22+
| StructSumZeroAlloc | 721.0 ns | 11.62 ns | 10.87 ns | 0.09 | 0.00 | - | - | - | - |

Documents/BenchmarksResults/ArrayOfIntSum.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66
### Results:
77
``` ini
88

9-
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.19041
9+
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
1010
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
11-
.NET Core SDK=3.1.402
12-
[Host] : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
13-
DefaultJob : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
11+
.NET Core SDK=5.0.101
12+
[Host] : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
13+
DefaultJob : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
1414

1515

1616
```
17-
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
18-
|----------------- |-----------:|--------:|--------:|------:|-------:|------:|------:|----------:|
19-
| SysSum | 585.0 ns | 1.34 ns | 1.26 ns | 0.14 | - | - | - | - |
20-
| SysEnumerableSum | 4,240.8 ns | 9.10 ns | 8.06 ns | 1.00 | 0.0076 | - | - | 32 B |
21-
| ConvertSum | 4,798.5 ns | 5.86 ns | 5.48 ns | 1.13 | 0.0076 | - | - | 32 B |
22-
| StructSum | 589.7 ns | 1.09 ns | 1.02 ns | 0.14 | - | - | - | - |
17+
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
18+
|-------------------- |-----------:|---------:|---------:|------:|-------:|------:|------:|----------:|
19+
| Handmaded | 641.2 ns | 8.73 ns | 8.16 ns | 0.15 | - | - | - | - |
20+
| LINQ | 4,257.4 ns | 83.82 ns | 99.78 ns | 1.00 | 0.0076 | - | - | 32 B |
21+
| StructLinqZeroAlloc | 622.3 ns | 9.07 ns | 8.48 ns | 0.15 | - | - | - | - |
22+
| StructLinq | 782.4 ns | 11.52 ns | 9.62 ns | 0.18 | 0.0076 | - | - | 32 B |

Documents/BenchmarksResults/ArraySelectCount.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
``` ini
88

99
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
10-
Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
10+
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
1111
.NET Core SDK=5.0.101
1212
[Host] : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
1313
DefaultJob : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
1414

1515

1616
```
17-
| Method | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
18-
|-------------------- |---------:|---------:|---------:|------:|------:|------:|----------:|
19-
| Linq | 17.86 μs | 0.107 μs | 0.100 μs | - | - | - | 48 B |
20-
| StructLinq | 13.46 μs | 0.069 μs | 0.065 μs | - | - | - | 64 B |
21-
| StructLinqZeroAlloc | 13.37 μs | 0.055 μs | 0.049 μs | - | - | - | - |
17+
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
18+
|-------------------- |-------------:|----------:|----------:|------:|-------:|------:|------:|----------:|
19+
| Linq | 19,973.59 ns | 34.920 ns | 32.664 ns | 1.000 | - | - | - | 48 B |
20+
| StructLinq | 26.10 ns | 0.376 ns | 0.352 ns | 0.001 | 0.0153 | - | - | 64 B |
21+
| StructLinqZeroAlloc | 11.54 ns | 0.016 ns | 0.013 ns | 0.001 | - | - | - | - |

Documents/BenchmarksResults/Contains.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@
66
### Results:
77
``` ini
88

9-
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.19041
9+
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
1010
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
11-
.NET Core SDK=3.1.402
12-
[Host] : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
13-
DefaultJob : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
11+
.NET Core SDK=5.0.101
12+
[Host] : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
13+
DefaultJob : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
1414

1515

1616
```
17-
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
18-
|-------------------- |---------:|----------:|----------:|------:|-------:|------:|------:|----------:|
19-
| Linq | 1.174 us | 0.0023 us | 0.0021 us | 1.00 | - | - | - | - |
20-
| Array | 1.213 us | 0.0023 us | 0.0020 us | 1.03 | - | - | - | - |
21-
| StructLinq | 2.146 us | 0.0038 us | 0.0035 us | 1.83 | 0.0076 | - | - | 32 B |
22-
| StructLinqZeroAlloc | 2.818 us | 0.0045 us | 0.0042 us | 2.40 | - | - | - | - |
17+
| Method | Mean | Error | StdDev | Median | Ratio | RatioSD | Code Size | Gen 0 | Gen 1 | Gen 2 | Allocated |
18+
|-------------------- |---------:|----------:|----------:|---------:|------:|--------:|----------:|-------:|------:|------:|----------:|
19+
| Array | 1.191 μs | 0.0142 μs | 0.0126 μs | 1.190 μs | 1.00 | 0.00 | 98 B | - | - | - | - |
20+
| StructLinq | 2.902 μs | 0.0251 μs | 0.0209 μs | 2.896 μs | 2.44 | 0.03 | 156 B | 0.0076 | - | - | 32 B |
21+
| StructLinqZeroAlloc | 2.923 μs | 0.0582 μs | 0.1253 μs | 2.866 μs | 2.58 | 0.13 | 236 B | - | - | - | - |

Documents/BenchmarksResults/ListWhereSelectSum.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical
1414

1515

1616
```
17-
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
18-
|-------------------------------- |---------:|---------:|---------:|------:|------:|------:|------:|----------:|
19-
| LINQ | 65.57 μs | 0.596 μs | 0.557 μs | 1.00 | - | - | - | 152 B |
20-
| StructLinqWithDelegate | 29.12 μs | 0.101 μs | 0.095 μs | 0.44 | - | - | - | 96 B |
21-
| StructLinqWithDelegateZeroAlloc | 33.27 μs | 0.240 μs | 0.200 μs | 0.51 | - | - | - | - |
22-
| StructLinqZeroAlloc | 13.71 μs | 0.034 μs | 0.032 μs | 0.21 | - | - | - | - |
17+
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
18+
|-------------------------------- |----------:|----------:|----------:|------:|------:|------:|------:|----------:|
19+
| LINQ | 65.640 μs | 0.3483 μs | 0.3258 μs | 1.00 | - | - | - | 152 B |
20+
| StructLinqWithDelegate | 30.502 μs | 0.1173 μs | 0.1097 μs | 0.46 | - | - | - | 96 B |
21+
| StructLinqWithDelegateZeroAlloc | 29.441 μs | 0.1763 μs | 0.1563 μs | 0.45 | - | - | - | - |
22+
| StructLinqZeroAlloc | 6.303 μs | 0.0241 μs | 0.0201 μs | 0.10 | - | - | - | - |

Documents/BenchmarksResults/RangeWhereSelectSum.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical
1616
```
1717
| Method | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
1818
|---------------------------------- |----------:|----------:|----------:|------:|--------:|------:|------:|------:|----------:|
19-
| SysSum | 6.937 μs | 0.0217 μs | 0.0170 μs | 1.00 | 0.00 | - | - | - | - |
20-
| SysRangeWhereSelectSum | 84.396 μs | 0.6779 μs | 0.6010 μs | 12.18 | 0.11 | - | - | - | 160 B |
21-
| ConvertWhereSelectSumWithDelegate | 72.316 μs | 0.3989 μs | 0.3732 μs | 10.43 | 0.06 | - | - | - | 40 B |
22-
| StructRangeWhereSelectSum | 15.050 μs | 0.0400 μs | 0.0374 μs | 2.17 | 0.01 | - | - | - | - |
19+
| SysSum | 7.019 μs | 0.0157 μs | 0.0147 μs | 1.00 | 0.00 | - | - | - | - |
20+
| SysRangeWhereSelectSum | 83.535 μs | 0.5238 μs | 0.4900 μs | 11.90 | 0.08 | - | - | - | 160 B |
21+
| ConvertWhereSelectSumWithDelegate | 64.815 μs | 0.2524 μs | 0.2238 μs | 9.23 | 0.03 | - | - | - | 40 B |
22+
| StructRangeWhereSelectSum | 7.437 μs | 0.0332 μs | 0.0310 μs | 1.06 | 0.00 | - | - | - | - |

Documents/BenchmarksResults/Sum.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,19 @@
66
### Results:
77
``` ini
88

9-
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.19041
9+
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
1010
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
11-
.NET Core SDK=3.1.402
12-
[Host] : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
13-
DefaultJob : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
11+
.NET Core SDK=5.0.101
12+
[Host] : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
13+
DefaultJob : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
1414

1515

1616
```
17-
| Method | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
18-
|----------------- |----------:|----------:|----------:|------:|--------:|------:|------:|------:|----------:|
19-
| ForSum | 2.822 us | 0.0067 us | 0.0059 us | 1.00 | 0.00 | - | - | - | - |
20-
| SysSum | 42.149 us | 0.0726 us | 0.0643 us | 14.94 | 0.04 | - | - | - | 40 B |
21-
| StructSum | 2.852 us | 0.0045 us | 0.0042 us | 1.01 | 0.00 | - | - | - | - |
22-
| StructForEachSum | 2.858 us | 0.0068 us | 0.0063 us | 1.01 | 0.00 | - | - | - | - |
23-
| ConvertSum | 42.165 us | 0.0595 us | 0.0527 us | 14.94 | 0.03 | - | - | - | 40 B |
17+
| Method | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated | Code Size |
18+
|------------------- |----------:|----------:|----------:|------:|--------:|------:|------:|------:|----------:|----------:|
19+
| ForSum | 3.080 μs | 0.0561 μs | 0.0600 μs | 1.00 | 0.00 | - | - | - | - | 17 B |
20+
| SysSum | 41.612 μs | 0.7726 μs | 0.7227 μs | 13.50 | 0.31 | - | - | - | 40 B | 445 B |
21+
| StructSum | 5.692 μs | 0.0111 μs | 0.0104 μs | 1.85 | 0.04 | - | - | - | 24 B | 93 B |
22+
| StructSumZeroAlloc | 3.054 μs | 0.0545 μs | 0.0510 μs | 0.99 | 0.03 | - | - | - | - | 139 B |
23+
| StructForEachSum | 3.077 μs | 0.0591 μs | 0.0726 μs | 1.00 | 0.03 | - | - | - | - | 22 B |
24+
| ConvertSum | 41.976 μs | 0.6487 μs | 0.5750 μs | 13.63 | 0.30 | - | - | - | 40 B | 594 B |

Documents/BenchmarksResults/SumOnList.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66
### Results:
77
``` ini
88

9-
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.19041
10-
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
11-
.NET Core SDK=3.1.402
12-
[Host] : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
13-
DefaultJob : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), X64 RyuJIT
9+
BenchmarkDotNet=v0.12.0, OS=Windows 10.0.19042
10+
Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
11+
.NET Core SDK=5.0.100-preview.7.20366.6
12+
[Host] : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT
13+
DefaultJob : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT
1414

1515

1616
```
1717
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
1818
|----------- |----------:|----------:|----------:|------:|------:|------:|------:|----------:|
19-
| Linq | 61.786 us | 0.0490 us | 0.0409 us | 1.00 | - | - | - | 40 B |
20-
| StructLinq | 5.849 us | 0.0027 us | 0.0025 us | 0.09 | - | - | - | - |
19+
| Linq | 70.579 us | 0.7917 us | 0.7406 us | 1.00 | - | - | - | 40 B |
20+
| StructLinq | 5.333 us | 0.0396 us | 0.0370 us | 0.08 | - | - | - | - |

Documents/BenchmarksResults/ToArrayOnArraySelect.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77
``` ini
88

99
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
10-
Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
10+
Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
1111
.NET Core SDK=5.0.101
1212
[Host] : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
1313
DefaultJob : .NET Core 5.0.1 (CoreCLR 5.0.120.57516, CoreFX 5.0.120.57516), X64 RyuJIT
1414

1515

1616
```
17-
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated | Code Size |
18-
|----------------------- |----------:|----------:|----------:|------:|-------:|-------:|------:|----------:|----------:|
19-
| Linq | 17.323 μs | 0.0437 μs | 0.0387 μs | 1.00 | 8.4534 | 1.0376 | - | 39.13 KB | 0.96 KB |
20-
| StructLinq | 22.315 μs | 0.0273 μs | 0.0228 μs | 1.29 | 8.4534 | 1.0376 | - | 39.15 KB | 0.42 KB |
21-
| StructLinqFaster | 22.256 μs | 0.0598 μs | 0.0530 μs | 1.28 | 8.4534 | 1.0376 | - | 39.12 KB | 0.58 KB |
22-
| StructLinqWithFunction | 8.443 μs | 0.0467 μs | 0.0365 μs | 0.49 | 8.4686 | 1.0529 | - | 39.09 KB | 0.78 KB |
17+
| Method | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated | Code Size |
18+
|----------------------- |---------:|---------:|---------:|------:|-------:|-------:|------:|----------:|----------:|
19+
| Linq | 22.11 μs | 0.200 μs | 0.187 μs | 1.00 | 9.5215 | 0.0305 | - | 39.13 KB | 0.96 KB |
20+
| StructLinq | 22.10 μs | 0.191 μs | 0.169 μs | 1.00 | 9.5215 | 0.0305 | - | 39.15 KB | 0.42 KB |
21+
| StructLinqZeroAlloc | 27.75 μs | 0.144 μs | 0.135 μs | 1.26 | 9.5215 | 0.0305 | - | 39.12 KB | 0.58 KB |
22+
| StructLinqWithFunction | 12.03 μs | 0.155 μs | 0.145 μs | 0.54 | 9.5215 | 0.0153 | - | 39.09 KB | 0.78 KB |

0 commit comments

Comments
 (0)