Theme Dataset
Default 10K
Generic version for any input
Key ideas from the start 13.490   17.991  
Optimized generic float parsing 6.551 -51.4% 10.720 -40.4%
Optimized hash function 6.313 -3.6% 10.384 -3.1%
Using the input specs
Parse numbers as integers 5.229 -17.2% 8.627 -16.9%
Set dictionary capacity 4.341 -17.0% 8.951 3.8%
Optimized IndexOf 4.040 -6.9% 8.609 -3.8%
Use native integers everywhere 3.693 -8.6% 8.604 -0.1%
Use a custom dictionary 3.272 -11.4% 8.232 -4.3%
Fast Utf8Span.Equals 2.773 -15.3% 6.635 -19.4%
Optimize the inner loop 2.191 -21.0% 4.811 -27.5%
Low dictionary load factor 2.219 1.3% 4.185 -13.0%
Making it even faster
Faster Utf8Span.Equals 2.148 -3.2% 4.052 -3.2%
Better hash function 2.140 -0.4% 4.024 -0.7%
Smaller hot path, non inline rare paths 2.062 -3.6% 3.751 -6.8%
Init Summary during Add 2.025 -1.8% 3.752 0.0%
Copy keys to dict, better cache locality 1.975 -2.5% 3.394 -9.5%
ParseInt starts from semicolon 1.945 -1.5% 3.406 0.4%
Break chunks unevenly and munmap
at different times
1.814 -6.7% 3.256 -4.4%
Misc micro-optimizations 1.791 -1.3% 3.213 -1.3%
Final push
Final results, multiple changes 1.491 -16.8% 2.907 -9.5%
         
Windows has slow mmap
Last Linux (mmap based) 2.611   4.064  
Use async RandomAccess on Windows 2.041 -21.8% 3.598 -11.5%