Skip to content

Research on behavior of Classes, Structures using ArrayPool and Span on .NET platform

License

Notifications You must be signed in to change notification settings

yaryrslv/DotNetResearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DotNetResearch

BenchmarkDotNet=v0.13.5, OS=Windows 10 (10.0.19045.2846/22H2/2022Update)
11th Gen Intel Core i5-11400 2.60GHz, 1 CPU, 12 logical and 6 physical cores
.NET SDK=6.0.407
  [Host]     : .NET 6.0.15 (6.0.1523.11507), X64 RyuJIT AVX2
  DefaultJob : .NET 6.0.15 (6.0.1523.11507), X64 RyuJIT AVX2
ClassStruct
Method Count Mean Error StdDev Median Gen0 Gen1 Gen2 Allocated
Struct8 100 93.99 ns 1.842 ns 2.262 ns 93.50 ns 0.1312 - - 824 B
Struct48 100 732.70 ns 12.172 ns 10.790 ns 729.11 ns 0.6409 - - 4024 B
Struct80 100 1,041.54 ns 12.945 ns 11.476 ns 1,042.21 ns 1.1501 - - 7224 B
Struct144 100 1,607.62 ns 31.862 ns 86.683 ns 1,584.34 ns 2.6722 - - 16824 B
Class8 100 419.85 ns 8.248 ns 13.081 ns 414.81 ns 0.5136 0.0057 - 3224 B
Class48 100 591.86 ns 11.598 ns 12.410 ns 592.96 ns 1.0233 0.0238 - 6424 B
Class80 100 874.76 ns 17.531 ns 19.486 ns 867.52 ns 1.5335 0.0505 - 9624 B
Class144 100 1,545.83 ns 30.816 ns 66.334 ns 1,531.00 ns 3.0632 0.1945 - 19224 B
Struct8 1000 785.09 ns 14.130 ns 15.705 ns 785.48 ns 1.2779 0.0010 - 8024 B
Struct48 1000 7,321.46 ns 146.440 ns 260.297 ns 7,276.70 ns 6.3248 - - 40024 B
Struct80 1000 11,332.89 ns 216.099 ns 280.990 ns 11,322.80 ns 11.3525 - - 72024 B
Struct144 1000 66,549.79 ns 1,297.230 ns 3,637.572 ns 66,774.68 ns 249.7559 249.7559 41.6260 168052 B
Class8 1000 4,168.76 ns 76.205 ns 67.554 ns 4,172.55 ns 5.0964 0.5035 - 32024 B
Class48 1000 6,147.49 ns 122.585 ns 298.388 ns 6,125.02 ns 10.2005 1.6937 - 64024 B
Class80 1000 8,408.74 ns 85.997 ns 67.141 ns 8,400.84 ns 15.3046 3.8147 - 96024 B
Class144 1000 16,170.21 ns 376.830 ns 1,105.178 ns 15,990.47 ns 30.6091 0.2441 - 192024 B
Struct8 10000 8,852.19 ns 174.386 ns 407.621 ns 8,815.40 ns 12.6495 - - 80024 B
Struct48 10000 161,941.29 ns 3,222.248 ns 5,727.543 ns 160,483.70 ns 262.4512 262.4512 98.6328 400068 B
Struct80 10000 147,319.76 ns 2,892.672 ns 6,226.781 ns 146,856.64 ns 152.0996 152.0996 145.9961 720070 B
Struct144 10000 450,996.52 ns 41,827.259 ns 123,328.616 ns 530,492.38 ns 499.5117 499.5117 499.5117 1680192 B
Class8 10000 52,316.98 ns 614.328 ns 574.643 ns 52,201.20 ns 50.8423 16.9067 - 320024 B
Class48 10000 75,778.80 ns 1,036.953 ns 919.231 ns 75,536.19 ns 101.8066 50.9033 - 640024 B
Class80 10000 131,541.63 ns 6,544.965 ns 19,297.978 ns 124,453.74 ns 152.8320 76.4160 - 960024 B
Class144 10000 252,811.71 ns 15,975.224 ns 46,852.567 ns 226,538.87 ns 305.6641 152.8320 - 1920024 B
Struct8 100000 233,637.37 ns 4,568.666 ns 5,438.672 ns 231,676.95 ns 429.4434 429.4434 163.3301 800078 B
Struct48 100000 1,172,299.15 ns 23,250.185 ns 37,544.715 ns 1,169,725.59 ns 412.1094 412.1094 343.7500 4000137 B
Struct80 100000 2,384,367.50 ns 70,061.861 ns 206,578.978 ns 2,396,989.45 ns 355.4688 355.4688 335.9375 7200132 B
Struct144 100000 4,698,045.00 ns 142,258.073 ns 419,451.138 ns 4,656,503.52 ns 343.7500 343.7500 343.7500 16800136 B
Class8 100000 1,974,077.50 ns 11,803.005 ns 11,040.539 ns 1,967,142.19 ns 498.0469 248.0469 248.0469 3200109 B
Class48 100000 5,430,400.44 ns 101,460.226 ns 99,647.508 ns 5,431,667.19 ns 1046.8750 515.6250 242.1875 6400112 B
Class80 100000 8,144,979.27 ns 145,497.553 ns 136,098.502 ns 8,083,326.56 ns 1593.7500 703.1250 296.8750 9600168 B
Class144 100000 22,011,936.58 ns 416,845.598 ns 428,069.739 ns 22,004,437.50 ns 3375.0000 1500.0000 500.0000 19200249 B
Struct8 1000000 2,167,807.07 ns 67,999.047 ns 200,496.723 ns 2,151,857.62 ns 300.7813 300.7813 300.7813 8000121 B
Struct48 1000000 16,511,118.96 ns 169,277.011 ns 158,341.821 ns 16,557,221.88 ns 968.7500 968.7500 968.7500 40000370 B
Struct80 1000000 28,374,733.04 ns 186,187.019 ns 165,049.943 ns 28,312,015.62 ns 968.7500 968.7500 968.7500 72000371 B
Struct144 1000000 60,754,146.83 ns 414,191.904 ns 367,170.334 ns 60,762,116.67 ns 888.8889 888.8889 888.8889 168000464 B
Class8 1000000 43,593,642.92 ns 784,541.362 ns 733,860.477 ns 43,518,706.25 ns 4562.5000 2187.5000 937.5000 32000388 B
Class48 1000000 72,249,971.43 ns 927,840.899 ns 867,902.953 ns 72,650,071.43 ns 10000.0000 4142.8571 1428.5714 64001296 B
Class80 1000000 89,101,604.76 ns 1,325,922.688 ns 1,175,395.927 ns 89,546,616.67 ns 15333.3333 6000.0000 1833.3333 96000924 B
Class144 1000000 252,870,903.70 ns 5,024,278.318 ns 11,544,114.960 ns 255,444,700.00 ns 31666.6667 12000.0000 3000.0000 192001400 B
ArrayPool
Method Count Mean Error StdDev Median Gen0 Gen1 Gen2 Allocated
Struct8WithArrayPool 100 111.3 ns 2.27 ns 5.07 ns 109.3 ns 0.1669 - - 1.02 KB
Struct48WithArrayPool 100 644.9 ns 4.35 ns 3.63 ns 644.1 ns 0.8163 - - 5.02 KB
Struct80WithArrayPool 100 864.1 ns 10.85 ns 9.61 ns 860.0 ns 1.4677 - - 9.02 KB
Struct144WithArrayPool 100 1,318.2 ns 17.61 ns 16.47 ns 1,317.9 ns 3.4122 - - 21.02 KB
Class8WithArrayPool 100 436.4 ns 3.39 ns 3.01 ns 436.0 ns 0.5493 0.0067 - 3.37 KB
Class48WithArrayPool 100 621.7 ns 3.92 ns 3.06 ns 621.8 ns 1.0595 0.0248 - 6.49 KB
Class80WithArrayPool 100 869.4 ns 9.06 ns 8.03 ns 869.6 ns 1.5697 0.0553 - 9.62 KB
Class144WithArrayPool 100 1,427.9 ns 15.68 ns 13.09 ns 1,425.3 ns 3.0994 0.2022 - 18.99 KB
Struct8WithArrayPool 1000 592.5 ns 4.57 ns 4.28 ns 593.9 ns 1.3046 - - 8.02 KB
Struct48WithArrayPool 1000 5,997.7 ns 46.42 ns 43.42 ns 5,986.4 ns 6.4926 - - 40.02 KB
Struct80WithArrayPool 1000 8,650.1 ns 51.57 ns 43.06 ns 8,629.1 ns 11.6272 - - 72.02 KB
Struct144WithArrayPool 1000 65,439.1 ns 582.74 ns 516.58 ns 65,335.5 ns 249.7559 249.7559 41.6260 168.05 KB
Class8WithArrayPool 1000 4,241.3 ns 56.90 ns 53.22 ns 4,237.7 ns 5.1270 0.5112 - 31.46 KB
Class48WithArrayPool 1000 5,909.6 ns 111.15 ns 114.14 ns 5,847.1 ns 10.2310 1.7700 - 62.71 KB
Class80WithArrayPool 1000 8,395.8 ns 101.27 ns 89.78 ns 8,421.0 ns 15.3351 3.0670 - 93.96 KB
Class144WithArrayPool 1000 14,836.8 ns 129.39 ns 101.02 ns 14,827.8 ns 30.6396 11.1084 - 187.71 KB
Struct8WithArrayPool 10000 26,903.0 ns 278.36 ns 260.38 ns 26,872.3 ns 41.6565 41.6565 41.6565 128.04 KB
Struct48WithArrayPool 10000 165,052.0 ns 2,631.64 ns 2,461.64 ns 165,260.1 ns 199.9512 199.9512 199.9512 640.09 KB
Struct80WithArrayPool 10000 279,140.8 ns 2,910.68 ns 2,430.55 ns 279,744.8 ns 333.0078 333.0078 333.0078 1152.13 KB
Struct144WithArrayPool 10000 282,437.1 ns 12,039.57 ns 35,498.94 ns 263,670.2 ns 325.6836 325.6836 325.6836 2688.12 KB
Class8WithArrayPool 10000 97,041.8 ns 777.54 ns 727.31 ns 96,914.2 ns 41.6260 41.6260 41.6260 362.41 KB
Class48WithArrayPool 10000 501,891.8 ns 11,124.69 ns 32,801.40 ns 509,055.8 ns 117.1875 78.1250 39.0625 674.91 KB
Class80WithArrayPool 10000 900,515.8 ns 17,842.08 ns 48,842.41 ns 907,721.3 ns 173.8281 107.4219 40.0391 987.42 KB
Class144WithArrayPool 10000 1,122,014.5 ns 22,114.90 ns 25,467.55 ns 1,124,458.1 ns 328.1250 173.8281 68.3594 1924.93 KB
Struct8WithArrayPool 100000 251,721.6 ns 3,081.20 ns 2,882.15 ns 251,636.5 ns 333.0078 333.0078 333.0078 1024.13 KB
Struct48WithArrayPool 100000 1,097,118.8 ns 14,834.58 ns 13,150.47 ns 1,098,952.8 ns 363.2813 363.2813 363.2813 5120.14 KB
Struct80WithArrayPool 100000 2,029,955.2 ns 40,110.31 ns 86,341.68 ns 2,022,686.9 ns 398.4375 398.4375 398.4375 9216.15 KB
Struct144WithArrayPool 100000 5,287,464.9 ns 140,275.77 ns 413,606.27 ns 5,397,146.5 ns 406.2500 406.2500 406.2500 21504.15 KB
Class8WithArrayPool 100000 3,570,457.4 ns 11,096.89 ns 10,380.04 ns 3,570,169.9 ns 535.1563 457.0313 304.6875 3367.9 KB
Class48WithArrayPool 100000 5,641,567.2 ns 94,587.99 ns 88,477.67 ns 5,599,684.0 ns 1078.1250 585.9375 304.6875 6492.91 KB
Class80WithArrayPool 100000 6,657,290.2 ns 112,325.82 ns 105,069.65 ns 6,652,571.9 ns 1609.3750 773.4375 367.1875 9617.95 KB
Class144WithArrayPool 100000 19,874,888.8 ns 101,265.65 ns 89,769.36 ns 19,891,206.2 ns 3375.0000 1500.0000 500.0000 18992.99 KB
Struct8WithArrayPool 1000000 1,618,861.0 ns 36,328.98 ns 107,116.83 ns 1,602,700.1 ns 453.1250 453.1250 453.1250 8192.16 KB
Struct48WithArrayPool 1000000 16,717,869.0 ns 91,635.55 ns 81,232.53 ns 16,753,631.2 ns 968.7500 968.7500 968.7500 40960.36 KB
Struct80WithArrayPool 1000000 28,243,196.7 ns 161,348.88 ns 143,031.58 ns 28,191,929.7 ns 968.7500 968.7500 968.7500 73728.36 KB
Struct144WithArrayPool 1000000 60,484,982.9 ns 336,360.79 ns 280,876.49 ns 60,481,333.3 ns 888.8889 888.8889 888.8889 172032.87 KB
Class8WithArrayPool 1000000 43,783,542.5 ns 700,125.44 ns 654,897.77 ns 44,067,912.5 ns 4562.5000 2187.5000 937.5000 31629.88 KB
Class48WithArrayPool 1000000 72,745,489.0 ns 1,017,896.98 ns 849,990.08 ns 72,988,414.3 ns 10000.0000 4142.8571 1428.5714 62880.72 KB
Class80WithArrayPool 1000000 91,243,270.4 ns 1,818,865.62 ns 4,629,593.73 ns 89,817,800.0 ns 15333.3333 6000.0000 1833.3333 94130.3 KB
Class144WithArrayPool 1000000 226,337,891.7 ns 4,512,341.70 ns 5,867,318.79 ns 226,187,700.0 ns 32000.0000 12333.3333 2666.6667 187880.73 KB
Span
Method Count Mean Error StdDev Median Gen0 Gen1 Gen2 Allocated
Struct8WithSpan 100 92.60 ns 1.844 ns 3.325 ns 91.36 ns 0.1311 0.0002 - 824 B
Struct48WithSpan 100 736.26 ns 6.228 ns 5.826 ns 733.81 ns 0.6409 0.0095 - 4024 B
Struct80WithSpan 100 937.18 ns 5.661 ns 5.295 ns 935.88 ns 1.1501 0.0296 - 7224 B
Struct144WithSpan 100 1,497.93 ns 9.469 ns 7.907 ns 1,496.38 ns 2.6722 0.1564 - 16824 B
Class8WithSpan 100 391.34 ns 3.695 ns 3.276 ns 391.03 ns 0.5136 0.0119 - 3224 B
Class48WithSpan 100 587.88 ns 6.881 ns 6.437 ns 584.85 ns 1.0233 0.0458 - 6424 B
Class80WithSpan 100 804.14 ns 7.810 ns 7.306 ns 805.55 ns 1.5335 0.1011 - 9624 B
Class144WithSpan 100 1,446.42 ns 16.989 ns 15.061 ns 1,445.74 ns 3.0632 0.3681 - 19224 B
Struct8WithSpan 1000 798.47 ns 5.998 ns 5.610 ns 800.46 ns 1.2779 0.0372 - 8024 B
Struct48WithSpan 1000 7,225.92 ns 39.188 ns 36.656 ns 7,219.63 ns 6.3248 0.7858 - 40024 B
Struct80WithSpan 1000 11,215.49 ns 57.456 ns 53.745 ns 11,210.50 ns 11.3525 2.2583 - 72024 B
Struct144WithSpan 1000 19,834.74 ns 187.981 ns 175.837 ns 19,779.39 ns 52.6123 52.6123 52.6123 168042 B
Class8WithSpan 1000 3,994.66 ns 20.135 ns 17.849 ns 3,994.07 ns 5.0964 0.8469 - 32024 B
Class48WithSpan 1000 5,770.36 ns 62.956 ns 58.889 ns 5,751.86 ns 10.2005 2.5482 - 64024 B
Class80WithSpan 1000 9,027.06 ns 95.697 ns 84.833 ns 8,989.99 ns 15.3046 5.0964 - 96024 B
Class144WithSpan 1000 15,972.56 ns 208.237 ns 194.785 ns 15,920.32 ns 30.6091 9.6130 - 192024 B
Struct8WithSpan 10000 8,401.06 ns 101.664 ns 90.122 ns 8,390.17 ns 12.6495 2.5177 - 80024 B
Struct48WithSpan 10000 78,914.02 ns 803.247 ns 751.358 ns 78,735.24 ns 124.8779 124.8779 124.8779 400066 B
Struct80WithSpan 10000 131,131.28 ns 1,742.562 ns 1,629.994 ns 131,394.38 ns 146.9727 146.9727 146.9727 720070 B
Struct144WithSpan 10000 385,687.42 ns 7,300.422 ns 7,811.369 ns 387,107.71 ns 224.1211 224.1211 224.1211 1680094 B
Class8WithSpan 10000 57,692.91 ns 407.031 ns 360.822 ns 57,674.86 ns 50.8423 25.3906 - 320024 B
Class48WithSpan 10000 102,442.33 ns 1,062.645 ns 942.007 ns 102,174.13 ns 101.8066 50.9033 - 640024 B
Class80WithSpan 10000 154,152.20 ns 2,412.807 ns 2,256.941 ns 152,947.73 ns 152.8320 76.4160 - 960024 B
Class144WithSpan 10000 349,980.58 ns 5,366.623 ns 4,757.371 ns 348,105.10 ns 305.6641 152.8320 - 1920024 B
Struct8WithSpan 100000 98,452.31 ns 932.437 ns 872.202 ns 98,754.46 ns 249.8779 249.8779 249.8779 800108 B
Struct48WithSpan 100000 1,692,735.20 ns 33,852.717 ns 81,758.117 ns 1,688,124.22 ns 224.6094 224.6094 224.6094 4000096 B
Struct80WithSpan 100000 3,132,851.25 ns 62,290.300 ns 161,900.771 ns 3,196,000.78 ns 246.0938 246.0938 246.0938 7200106 B
Struct144WithSpan 100000 5,601,497.92 ns 109,361.704 ns 117,015.798 ns 5,611,818.75 ns 179.6875 179.6875 179.6875 16800087 B
Class8WithSpan 100000 1,943,178.35 ns 8,134.739 ns 7,609.240 ns 1,941,393.16 ns 496.0938 246.0938 246.0938 3200109 B
Class48WithSpan 100000 6,920,068.53 ns 133,835.481 ns 118,641.668 ns 6,911,010.16 ns 1085.9375 500.0000 226.5625 6400106 B
Class80WithSpan 100000 8,948,412.71 ns 176,040.019 ns 303,660.383 ns 8,955,438.28 ns 1609.3750 687.5000 265.6250 9600137 B
Class144WithSpan 100000 21,296,886.20 ns 69,015.891 ns 53,883.068 ns 21,280,206.25 ns 3375.0000 1437.5000 468.7500 19200235 B
Struct8WithSpan 1000000 3,141,163.21 ns 62,607.331 ns 158,216.715 ns 3,189,228.91 ns 167.9688 167.9688 167.9688 8000081 B
Struct48WithSpan 1000000 15,751,957.29 ns 298,977.146 ns 319,902.197 ns 15,731,469.53 ns 250.0000 250.0000 250.0000 40000115 B
Struct80WithSpan 1000000 29,121,434.38 ns 579,942.404 ns 952,862.000 ns 29,058,621.88 ns 218.7500 218.7500 218.7500 72000115 B
Struct144WithSpan 1000000 58,162,820.99 ns 1,151,629.745 ns 1,232,230.925 ns 58,340,033.33 ns 333.3333 333.3333 333.3333 168000232 B
Class8WithSpan 1000000 51,881,955.71 ns 750,693.434 ns 665,470.176 ns 51,877,340.00 ns 4500.0000 2000.0000 700.0000 32000330 B
Class48WithSpan 1000000 71,609,374.29 ns 1,385,818.611 ns 1,296,295.588 ns 71,699,900.00 ns 9857.1429 4000.0000 1000.0000 64001887 B
Class80WithSpan 1000000 116,737,583.33 ns 2,150,959.118 ns 2,112,529.463 ns 116,822,366.67 ns 15166.6667 5833.3333 1166.6667 96002224 B
Class144WithSpan 1000000 206,319,991.06 ns 4,072,815.430 ns 7,344,126.338 ns 206,420,000.00 ns 31000.0000 11666.6667 1666.6667 192000875 B

About

Research on behavior of Classes, Structures using ArrayPool and Span on .NET platform

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages