smoothutf8 0.2.2

Portable, formally verified UTF-8 validation with an optional slack-buffer fast path for zero-copy parsers
Documentation
baseline,shape,impl,size,gibps
portable,ascii,smoothutf8,1,0.53015
portable,ascii,simdutf8,1,0.23326
portable,ascii,std_from_utf8,1,0.23398
portable,ascii,smoothutf8_slack,1,0.67900
portable,ascii,smoothutf8_slackbuf,1,0.70045
portable,ascii,smoothutf8,2,1.01451
portable,ascii,simdutf8,2,0.40915
portable,ascii,std_from_utf8,2,0.40548
portable,ascii,smoothutf8_slack,2,1.35940
portable,ascii,smoothutf8_slackbuf,2,1.39097
portable,ascii,smoothutf8,4,2.49617
portable,ascii,simdutf8,4,0.52031
portable,ascii,std_from_utf8,4,0.52812
portable,ascii,smoothutf8_slack,4,2.65637
portable,ascii,smoothutf8_slackbuf,4,2.80118
portable,ascii,smoothutf8,8,3.34827
portable,ascii,simdutf8,8,0.93638
portable,ascii,std_from_utf8,8,0.90547
portable,ascii,smoothutf8_slack,8,5.42808
portable,ascii,smoothutf8_slackbuf,8,5.66929
portable,ascii,smoothutf8,16,5.87747
portable,ascii,simdutf8,16,3.17844
portable,ascii,std_from_utf8,16,2.95242
portable,ascii,smoothutf8_slack,16,8.11080
portable,ascii,smoothutf8_slackbuf,16,7.20280
portable,ascii,smoothutf8,32,9.95568
portable,ascii,simdutf8,32,4.66741
portable,ascii,std_from_utf8,32,4.30999
portable,ascii,smoothutf8_slack,32,12.31908
portable,ascii,smoothutf8_slackbuf,32,10.80107
portable,ascii,smoothutf8,64,11.76260
portable,ascii,simdutf8,64,15.14038
portable,ascii,std_from_utf8,64,5.90496
portable,ascii,smoothutf8_slack,64,12.90423
portable,ascii,smoothutf8_slackbuf,64,13.02179
portable,ascii,smoothutf8,128,18.12821
portable,ascii,simdutf8,128,22.66853
portable,ascii,std_from_utf8,128,11.24828
portable,ascii,smoothutf8_slack,128,20.15645
portable,ascii,smoothutf8_slackbuf,128,20.06789
portable,ascii,smoothutf8,256,23.42489
portable,ascii,simdutf8,256,30.19218
portable,ascii,std_from_utf8,256,19.18707
portable,ascii,smoothutf8_slack,256,22.23846
portable,ascii,smoothutf8_slackbuf,256,22.59463
portable,ascii,smoothutf8,512,28.70956
portable,ascii,simdutf8,512,41.80948
portable,ascii,std_from_utf8,512,24.49716
portable,ascii,smoothutf8_slack,512,29.55297
portable,ascii,smoothutf8_slackbuf,512,29.87327
portable,ascii,smoothutf8,1024,30.51367
portable,ascii,simdutf8,1024,53.90122
portable,ascii,std_from_utf8,1024,28.11291
portable,ascii,smoothutf8_slack,1024,31.64358
portable,ascii,smoothutf8_slackbuf,1024,31.71514
portable,ascii,smoothutf8,2048,32.17036
portable,ascii,simdutf8,2048,62.21982
portable,ascii,std_from_utf8,2048,30.76071
portable,ascii,smoothutf8_slack,2048,32.81234
portable,ascii,smoothutf8_slackbuf,2048,32.77062
portable,ascii,smoothutf8,4096,28.06782
portable,ascii,simdutf8,4096,65.91042
portable,ascii,std_from_utf8,4096,27.72712
portable,ascii,smoothutf8_slack,4096,28.20896
portable,ascii,smoothutf8_slackbuf,4096,28.12162
portable,ascii,smoothutf8,8192,30.48709
portable,ascii,simdutf8,8192,69.06930
portable,ascii,std_from_utf8,8192,30.51148
portable,ascii,smoothutf8_slack,8192,30.81712
portable,ascii,smoothutf8_slackbuf,8192,30.78603
portable,ascii,smoothutf8,16384,31.99176
portable,ascii,simdutf8,16384,75.37438
portable,ascii,std_from_utf8,16384,32.10484
portable,ascii,smoothutf8_slack,16384,32.18339
portable,ascii,smoothutf8_slackbuf,16384,32.16575
portable,ascii,smoothutf8,32768,32.99483
portable,ascii,simdutf8,32768,65.78198
portable,ascii,std_from_utf8,32768,32.91441
portable,ascii,smoothutf8_slack,32768,32.85452
portable,ascii,smoothutf8_slackbuf,32768,32.88745
portable,ascii,smoothutf8,65536,26.45880
portable,ascii,simdutf8,65536,43.40123
portable,ascii,std_from_utf8,65536,26.15493
portable,ascii,smoothutf8_slack,65536,26.74752
portable,ascii,smoothutf8_slackbuf,65536,26.47372
portable,ascii,smoothutf8,131072,26.55261
portable,ascii,simdutf8,131072,43.28121
portable,ascii,std_from_utf8,131072,26.24942
portable,ascii,smoothutf8_slack,131072,26.51224
portable,ascii,smoothutf8_slackbuf,131072,26.45364
portable,ascii,smoothutf8,262144,26.40414
portable,ascii,simdutf8,262144,43.25207
portable,ascii,std_from_utf8,262144,26.12191
portable,ascii,smoothutf8_slack,262144,26.62878
portable,ascii,smoothutf8_slackbuf,262144,26.42644
portable,ascii,smoothutf8,524288,26.44791
portable,ascii,simdutf8,524288,43.47233
portable,ascii,std_from_utf8,524288,26.16867
portable,ascii,smoothutf8_slack,524288,26.49527
portable,ascii,smoothutf8_slackbuf,524288,26.38788
portable,ascii,smoothutf8,1048576,26.46296
portable,ascii,simdutf8,1048576,43.32383
portable,ascii,std_from_utf8,1048576,26.27852
portable,ascii,smoothutf8_slack,1048576,26.42358
portable,ascii,smoothutf8_slackbuf,1048576,26.49023
portable,ascii,smoothutf8,2097152,23.20094
portable,ascii,simdutf8,2097152,36.50769
portable,ascii,std_from_utf8,2097152,22.81502
portable,ascii,smoothutf8_slack,2097152,23.26977
portable,ascii,smoothutf8_slackbuf,2097152,23.35994
portable,ascii,smoothutf8,4194304,19.86296
portable,ascii,simdutf8,4194304,23.12896
portable,ascii,std_from_utf8,4194304,19.69968
portable,ascii,smoothutf8_slack,4194304,19.89027
portable,ascii,smoothutf8_slackbuf,4194304,19.87408
portable,ascii,smoothutf8,8388608,19.76847
portable,ascii,simdutf8,8388608,22.86898
portable,ascii,std_from_utf8,8388608,19.63778
portable,ascii,smoothutf8_slack,8388608,19.70863
portable,ascii,smoothutf8_slackbuf,8388608,19.80405
portable,ascii,smoothutf8,16777216,19.70515
portable,ascii,simdutf8,16777216,22.89344
portable,ascii,std_from_utf8,16777216,19.59567
portable,ascii,smoothutf8_slack,16777216,19.65186
portable,ascii,smoothutf8_slackbuf,16777216,19.64939
portable,ascii,smoothutf8,33554432,19.65285
portable,ascii,simdutf8,33554432,22.89210
portable,ascii,std_from_utf8,33554432,19.59616
portable,ascii,smoothutf8_slack,33554432,19.80606
portable,ascii,smoothutf8_slackbuf,33554432,19.70738
portable,ascii,smoothutf8,67108864,19.05314
portable,ascii,simdutf8,67108864,22.70168
portable,ascii,std_from_utf8,67108864,18.94743
portable,ascii,smoothutf8_slack,67108864,19.14594
portable,ascii,smoothutf8_slackbuf,67108864,19.05836
portable,ascii,smoothutf8,134217728,11.42178
portable,ascii,simdutf8,134217728,17.17222
portable,ascii,std_from_utf8,134217728,11.19069
portable,ascii,smoothutf8_slack,134217728,11.34507
portable,ascii,smoothutf8_slackbuf,134217728,11.38848
portable,ascii,smoothutf8,268435456,8.99410
portable,ascii,simdutf8,268435456,12.67491
portable,ascii,std_from_utf8,268435456,8.62813
portable,ascii,smoothutf8_slack,268435456,8.71961
portable,ascii,smoothutf8_slackbuf,268435456,8.72905
portable,ascii,smoothutf8,536870912,8.26761
portable,ascii,simdutf8,536870912,11.45318
portable,ascii,std_from_utf8,536870912,8.10649
portable,ascii,smoothutf8_slack,536870912,8.10373
portable,ascii,smoothutf8_slackbuf,536870912,8.08277
simd_avx2,ascii,smoothutf8,1,0.50271
simd_avx2,ascii,simdutf8,1,0.23082
simd_avx2,ascii,std_from_utf8,1,0.23463
simd_avx2,ascii,smoothutf8_slack,1,0.40320
simd_avx2,ascii,smoothutf8_slackbuf,1,0.35405
simd_avx2,ascii,smoothutf8,2,1.03890
simd_avx2,ascii,simdutf8,2,0.40976
simd_avx2,ascii,std_from_utf8,2,0.39813
simd_avx2,ascii,smoothutf8_slack,2,0.80241
simd_avx2,ascii,smoothutf8_slackbuf,2,0.70820
simd_avx2,ascii,smoothutf8,4,2.02187
simd_avx2,ascii,simdutf8,4,0.50364
simd_avx2,ascii,std_from_utf8,4,0.52648
simd_avx2,ascii,smoothutf8_slack,4,1.60864
simd_avx2,ascii,smoothutf8_slackbuf,4,1.41426
simd_avx2,ascii,smoothutf8,8,2.83217
simd_avx2,ascii,simdutf8,8,0.92949
simd_avx2,ascii,std_from_utf8,8,0.90720
simd_avx2,ascii,smoothutf8_slack,8,1.62780
simd_avx2,ascii,smoothutf8_slackbuf,8,1.46268
simd_avx2,ascii,smoothutf8,16,5.27363
simd_avx2,ascii,simdutf8,16,3.21471
simd_avx2,ascii,std_from_utf8,16,2.89551
simd_avx2,ascii,smoothutf8_slack,16,3.19473
simd_avx2,ascii,smoothutf8_slackbuf,16,2.93856
simd_avx2,ascii,smoothutf8,32,8.63535
simd_avx2,ascii,simdutf8,32,4.63539
simd_avx2,ascii,std_from_utf8,32,4.40296
simd_avx2,ascii,smoothutf8_slack,32,7.04763
simd_avx2,ascii,smoothutf8_slackbuf,32,6.61686
simd_avx2,ascii,smoothutf8,64,15.21070
simd_avx2,ascii,simdutf8,64,17.11105
simd_avx2,ascii,std_from_utf8,64,5.89911
simd_avx2,ascii,smoothutf8_slack,64,13.39822
simd_avx2,ascii,smoothutf8_slackbuf,64,11.80898
simd_avx2,ascii,smoothutf8,128,24.69431
simd_avx2,ascii,simdutf8,128,24.76922
simd_avx2,ascii,std_from_utf8,128,11.28876
simd_avx2,ascii,smoothutf8_slack,128,22.80863
simd_avx2,ascii,smoothutf8_slackbuf,128,21.12891
simd_avx2,ascii,smoothutf8,256,31.87840
simd_avx2,ascii,simdutf8,256,32.02614
simd_avx2,ascii,std_from_utf8,256,19.34902
simd_avx2,ascii,smoothutf8_slack,256,30.18759
simd_avx2,ascii,smoothutf8_slackbuf,256,28.66986
simd_avx2,ascii,smoothutf8,512,43.61050
simd_avx2,ascii,simdutf8,512,43.66241
simd_avx2,ascii,std_from_utf8,512,24.71171
simd_avx2,ascii,smoothutf8_slack,512,41.91975
simd_avx2,ascii,smoothutf8_slackbuf,512,40.16824
simd_avx2,ascii,smoothutf8,1024,54.55803
simd_avx2,ascii,simdutf8,1024,55.04296
simd_avx2,ascii,std_from_utf8,1024,28.54031
simd_avx2,ascii,smoothutf8_slack,1024,53.17392
simd_avx2,ascii,smoothutf8_slackbuf,1024,51.85831
simd_avx2,ascii,smoothutf8,2048,60.32859
simd_avx2,ascii,simdutf8,2048,60.19531
simd_avx2,ascii,std_from_utf8,2048,30.86824
simd_avx2,ascii,smoothutf8_slack,2048,59.40971
simd_avx2,ascii,smoothutf8_slackbuf,2048,59.06018
simd_avx2,ascii,smoothutf8,4096,63.94919
simd_avx2,ascii,simdutf8,4096,64.26810
simd_avx2,ascii,std_from_utf8,4096,27.86077
simd_avx2,ascii,smoothutf8_slack,4096,63.30712
simd_avx2,ascii,smoothutf8_slackbuf,4096,63.24624
simd_avx2,ascii,smoothutf8,8192,57.34231
simd_avx2,ascii,simdutf8,8192,65.98681
simd_avx2,ascii,std_from_utf8,8192,30.36575
simd_avx2,ascii,smoothutf8_slack,8192,65.80468
simd_avx2,ascii,smoothutf8_slackbuf,8192,65.24196
simd_avx2,ascii,smoothutf8,16384,62.79079
simd_avx2,ascii,simdutf8,16384,62.80371
simd_avx2,ascii,std_from_utf8,16384,32.16304
simd_avx2,ascii,smoothutf8_slack,16384,62.60016
simd_avx2,ascii,smoothutf8_slackbuf,16384,62.89172
simd_avx2,ascii,smoothutf8,32768,65.28662
simd_avx2,ascii,simdutf8,32768,65.37753
simd_avx2,ascii,std_from_utf8,32768,32.84815
simd_avx2,ascii,smoothutf8_slack,32768,65.28383
simd_avx2,ascii,smoothutf8_slackbuf,32768,65.52211
simd_avx2,ascii,smoothutf8,65536,43.29349
simd_avx2,ascii,simdutf8,65536,43.64018
simd_avx2,ascii,std_from_utf8,65536,26.12695
simd_avx2,ascii,smoothutf8_slack,65536,43.56231
simd_avx2,ascii,smoothutf8_slackbuf,65536,43.37964
simd_avx2,ascii,smoothutf8,131072,43.61056
simd_avx2,ascii,simdutf8,131072,43.66359
simd_avx2,ascii,std_from_utf8,131072,26.17737
simd_avx2,ascii,smoothutf8_slack,131072,43.58876
simd_avx2,ascii,smoothutf8_slackbuf,131072,43.67609
simd_avx2,ascii,smoothutf8,262144,43.63706
simd_avx2,ascii,simdutf8,262144,43.70346
simd_avx2,ascii,std_from_utf8,262144,26.24096
simd_avx2,ascii,smoothutf8_slack,262144,43.30731
simd_avx2,ascii,smoothutf8_slackbuf,262144,43.68313
simd_avx2,ascii,smoothutf8,524288,43.34883
simd_avx2,ascii,simdutf8,524288,43.36808
simd_avx2,ascii,std_from_utf8,524288,26.13366
simd_avx2,ascii,smoothutf8_slack,524288,43.35268
simd_avx2,ascii,smoothutf8_slackbuf,524288,43.64720
simd_avx2,ascii,smoothutf8,1048576,43.42594
simd_avx2,ascii,simdutf8,1048576,43.37001
simd_avx2,ascii,std_from_utf8,1048576,26.13156
simd_avx2,ascii,smoothutf8_slack,1048576,43.32960
simd_avx2,ascii,smoothutf8_slackbuf,1048576,43.37964
simd_avx2,ascii,smoothutf8,2097152,36.28388
simd_avx2,ascii,simdutf8,2097152,36.28590
simd_avx2,ascii,std_from_utf8,2097152,22.80889
simd_avx2,ascii,smoothutf8_slack,2097152,36.35953
simd_avx2,ascii,smoothutf8_slackbuf,2097152,36.15559
simd_avx2,ascii,smoothutf8,4194304,23.07567
simd_avx2,ascii,simdutf8,4194304,22.98335
simd_avx2,ascii,std_from_utf8,4194304,19.76047
simd_avx2,ascii,smoothutf8_slack,4194304,23.04436
simd_avx2,ascii,smoothutf8_slackbuf,4194304,22.97524
simd_avx2,ascii,smoothutf8,8388608,22.92468
simd_avx2,ascii,simdutf8,8388608,22.88505
simd_avx2,ascii,std_from_utf8,8388608,19.61067
simd_avx2,ascii,smoothutf8_slack,8388608,22.94487
simd_avx2,ascii,smoothutf8_slackbuf,8388608,22.89176
simd_avx2,ascii,smoothutf8,16777216,22.89813
simd_avx2,ascii,simdutf8,16777216,22.78594
simd_avx2,ascii,std_from_utf8,16777216,19.61190
simd_avx2,ascii,smoothutf8_slack,16777216,22.89881
simd_avx2,ascii,smoothutf8_slackbuf,16777216,22.78727
simd_avx2,ascii,smoothutf8,33554432,22.86530
simd_avx2,ascii,simdutf8,33554432,22.86530
simd_avx2,ascii,std_from_utf8,33554432,19.55569
simd_avx2,ascii,smoothutf8_slack,33554432,22.86530
simd_avx2,ascii,smoothutf8_slackbuf,33554432,22.86530
simd_avx2,ascii,smoothutf8,67108864,22.74630
simd_avx2,ascii,simdutf8,67108864,22.63591
simd_avx2,ascii,std_from_utf8,67108864,19.05314
simd_avx2,ascii,smoothutf8_slack,67108864,22.74216
simd_avx2,ascii,smoothutf8_slackbuf,67108864,22.74299
simd_avx2,ascii,smoothutf8,134217728,17.26305
simd_avx2,ascii,simdutf8,134217728,17.14678
simd_avx2,ascii,std_from_utf8,134217728,11.24101
simd_avx2,ascii,smoothutf8_slack,134217728,17.19726
simd_avx2,ascii,smoothutf8_slackbuf,134217728,17.26877
simd_avx2,ascii,smoothutf8,268435456,12.80410
simd_avx2,ascii,simdutf8,268435456,12.54013
simd_avx2,ascii,std_from_utf8,268435456,8.77501
simd_avx2,ascii,smoothutf8_slack,268435456,12.61989
simd_avx2,ascii,smoothutf8_slackbuf,268435456,12.64990
simd_avx2,ascii,smoothutf8,536870912,11.40381
simd_avx2,ascii,simdutf8,536870912,11.32785
simd_avx2,ascii,std_from_utf8,536870912,7.99910
simd_avx2,ascii,smoothutf8_slack,536870912,11.36932
simd_avx2,ascii,smoothutf8_slackbuf,536870912,11.37268