jzebedee / deltaq

Fast and portable delta encoding for .NET in 100% safe, managed code.
Other
40 stars 13 forks source link

Use generic accessor in SAIS #13

Closed jzebedee closed 2 years ago

jzebedee commented 2 years ago

BenchmarkDotNet=v0.13.1, OS=Windows 10.0.22000
Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R), 1 CPU, 8 logical and 4 physical cores
.NET SDK=6.0.200-preview.21617.4
  [Host]     : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT
  DefaultJob : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT
Method name asset Mean Error StdDev Median Ratio RatioSD Gen 0 BranchInstructions/Op BranchMispredictions/Op Allocated
sais crash(...)c175c [46] Byte[4765] 279.411 μs 5.3218 μs 5.9151 μs 276.548 μs 1.00 0.00 0.4883 548,792 3,070 4 KB
sais_na crash(...)c175c [46] Byte[4765] 233.780 μs 4.6734 μs 10.3560 μs 230.150 μs 0.85 0.05 0.7324 442,798 2,375 4 KB
sais crash(...)8a7ab [46] Byte[4707] 272.317 μs 5.4161 μs 10.8166 μs 267.709 μs 1.00 0.00 0.4883 539,002 2,275 4 KB
sais_na crash(...)8a7ab [46] Byte[4707] 224.111 μs 4.4805 μs 9.1525 μs 220.882 μs 0.82 0.04 0.7324 435,615 1,756 4 KB
sais crash(...)037fb [46] Byte[2401] 140.396 μs 2.7964 μs 5.7122 μs 137.787 μs 1.00 0.00 0.7324 277,238 1,052 3 KB
sais_na crash(...)037fb [46] Byte[2401] 116.080 μs 2.3202 μs 6.2729 μs 114.468 μs 0.84 0.06 0.7324 224,786 749 3 KB
sais crash(...)b9ca0 [46] Byte[4705] 280.367 μs 5.5819 μs 12.5994 μs 276.642 μs 1.00 0.00 0.4883 538,790 2,819 4 KB
sais_na crash(...)b9ca0 [46] Byte[4705] 227.475 μs 4.4841 μs 8.7458 μs 223.837 μs 0.81 0.04 0.7324 435,611 2,280 4 KB
sais crash(...)4c4ba [46] Byte[3084] 173.495 μs 3.2593 μs 4.6744 μs 173.064 μs 1.00 0.00 0.7324 353,549 1,072 3 KB
sais_na crash(...)4c4ba [46] Byte[3084] 143.763 μs 2.8510 μs 6.2581 μs 141.748 μs 0.83 0.04 0.7324 286,283 785 3 KB
sais crash(...)osort [24] Byte[68] 6.506 μs 0.1239 μs 0.2719 μs 6.404 μs 1.00 0.00 0.7782 11,892 17 3 KB
sais_na crash(...)osort [24] Byte[68] 6.725 μs 0.1343 μs 0.3058 μs 6.598 μs 1.04 0.07 0.7782 10,935 14 3 KB
sais crash(...)a33c4 [46] Byte[2365] 133.354 μs 2.6348 μs 2.5877 μs 132.425 μs 1.00 0.00 0.7324 272,533 916 3 KB
sais_na crash(...)a33c4 [46] Byte[2365] 110.779 μs 2.2105 μs 5.7061 μs 108.296 μs 0.82 0.03 0.7324 220,874 627 3 KB
sais crash(...)58872 [46] Byte[2587] 156.223 μs 4.8508 μs 13.7609 μs 151.100 μs 1.00 0.00 0.7324 299,016 1,093 3 KB
sais_na crash(...)58872 [46] Byte[2587] 119.586 μs 2.3611 μs 4.3175 μs 118.270 μs 0.76 0.08 0.7324 242,192 658 3 KB
sais crash(...)504ec [46] Byte[2798] 170.377 μs 3.2371 μs 8.9159 μs 167.767 μs 1.00 0.00 0.7324 322,941 1,847 4 KB
sais_na crash(...)504ec [46] Byte[2798] 133.812 μs 2.6206 μs 2.3231 μs 132.891 μs 0.78 0.05 0.7324 261,387 1,283 4 KB
sais crash(...)alloc [24] Byte[2433] 176.761 μs 3.5166 μs 6.8588 μs 174.369 μs 1.00 0.00 0.9766 273,579 4,897 4 KB
sais_na crash(...)alloc [24] Byte[2433] 167.139 μs 7.4953 μs 21.7453 μs 158.467 μs 0.98 0.14 0.9766 226,101 4,349 4 KB
sais fuzz1 Byte[17] 4.031 μs 0.0877 μs 0.2474 μs 3.943 μs 1.00 0.00 0.7782 7,070 12 3 KB
sais_na fuzz1 Byte[17] 4.414 μs 0.0881 μs 0.2077 μs 4.331 μs 1.10 0.08 0.7782 6,847 11 3 KB
sais fuzz2 Byte[17] 3.655 μs 0.0577 μs 0.0665 μs 3.663 μs 1.00 0.00 0.7782 7,059 11 3 KB
sais_na fuzz2 Byte[17] 4.170 μs 0.0810 μs 0.1940 μs 4.104 μs 1.16 0.07 0.7782 6,847 11 3 KB
sais fuzz3 Byte[2421] 126.737 μs 2.4291 μs 1.8964 μs 126.390 μs 1.00 0.00 0.7324 272,275 1,801 4 KB
sais_na fuzz3 Byte[2421] 106.097 μs 2.1127 μs 5.6025 μs 104.643 μs 0.84 0.04 0.8545 221,923 1,321 4 KB
jzebedee commented 2 years ago

Significantly better performance on all but the smallest inputs with reduced BI and BMP across the board. Worth it.