이 글을 보고 따라해봤다
총 10000번을 반복하고, 글처럼 아이템 개수를 바꿔가면서 테스트해봤다
length: 1000
Sum: 000005 ms
SumParallelForInterlocked: 000055 ms
SumParallelForWithLocalFinally: 000034 ms
SumSIMD: 000005 ms
length: 100000
Sum: 000618 ms
SumParallelForInterlocked: 000037 ms
SumParallelForWithLocalFinally: 000029 ms
SumSIMD: 000484 ms
length: 1000000
Sum: 005403 ms
SumParallelForInterlocked: 000046 ms
SumParallelForWithLocalFinally: 000031 ms
SumSIMD: 005104 ms
와 정말 쩐다
추가로 BenchmarkDotNet 을 사용해봤다
| Method | Length | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
|------------------------------- |------- |-------------:|-------------:|-------------:|-------:|--------:|------:|------:|------:|----------:|
| Sum | 1000 | 583.5 ns | 49.69 ns | 32.87 ns | 1.00 | 0.00 | - | - | - | - |
| SumParallelForInterlocked | 1000 | 52,022.5 ns | 39,320.37 ns | 26,007.99 ns | 90.47 | 48.20 | - | - | - | 1944 B |
| SumParallelForWithLocalFinally | 1000 | 36,386.6 ns | 11,210.86 ns | 7,415.29 ns | 62.34 | 12.07 | - | - | - | 2048 B |
| SumSIMD | 1000 | 524,825.3 ns | 16,917.59 ns | 8,848.23 ns | 888.92 | 42.91 | - | - | - | - |
| | | | | | | | | | | |
| Sum | 10000 | 13,953.5 ns | 13,970.95 ns | 9,240.92 ns | 1.00 | 0.00 | - | - | - | - |
| SumParallelForInterlocked | 10000 | 48,726.4 ns | 33,407.44 ns | 22,096.95 ns | 5.36 | 4.56 | - | - | - | 1944 B |
| SumParallelForWithLocalFinally | 10000 | 35,280.7 ns | 8,949.82 ns | 5,919.75 ns | 3.74 | 2.33 | - | - | - | 2003 B |
| SumSIMD | 10000 | 545,092.6 ns | 42,120.09 ns | 25,064.99 ns | 61.84 | 33.05 | - | - | - | - |
| | | | | | | | | | | |
| Sum | 100000 | 55,138.5 ns | 716.09 ns | 374.53 ns | 1.00 | 0.00 | - | - | - | - |
| SumParallelForInterlocked | 100000 | 33,248.6 ns | 13,561.80 ns | 8,070.41 ns | 0.62 | 0.14 | - | - | - | 1944 B |
| SumParallelForWithLocalFinally | 100000 | 37,787.2 ns | 9,927.10 ns | 6,566.16 ns | 0.67 | 0.13 | - | - | - | 2048 B |
| SumSIMD | 100000 | 548,687.0 ns | 27,351.00 ns | 18,090.99 ns | 9.95 | 0.28 | - | - | - | - |
결과가 다소 다르긴 하네