smoothutf8 0.2.3

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.53031
portable,ascii,simdutf8,1,0.23248
portable,ascii,std_from_utf8,1,0.23242
portable,ascii,smoothutf8_slack,1,0.88085
portable,ascii,smoothutf8_slackbuf,1,0.76766
portable,ascii,smoothutf8,2,1.00062
portable,ascii,simdutf8,2,0.40938
portable,ascii,std_from_utf8,2,0.40748
portable,ascii,smoothutf8_slack,2,1.74995
portable,ascii,smoothutf8_slackbuf,2,1.54307
portable,ascii,smoothutf8,4,2.48784
portable,ascii,simdutf8,4,0.52728
portable,ascii,std_from_utf8,4,0.52134
portable,ascii,smoothutf8_slack,4,3.51974
portable,ascii,smoothutf8_slackbuf,4,3.08487
portable,ascii,smoothutf8,8,3.34497
portable,ascii,simdutf8,8,0.94740
portable,ascii,std_from_utf8,8,0.89381
portable,ascii,smoothutf8_slack,8,7.12497
portable,ascii,smoothutf8_slackbuf,8,5.63499
portable,ascii,smoothutf8,16,5.89375
portable,ascii,simdutf8,16,3.19295
portable,ascii,std_from_utf8,16,2.90318
portable,ascii,smoothutf8_slack,16,8.06908
portable,ascii,smoothutf8_slackbuf,16,7.33578
portable,ascii,smoothutf8,32,9.91296
portable,ascii,simdutf8,32,4.78199
portable,ascii,std_from_utf8,32,4.32407
portable,ascii,smoothutf8_slack,32,12.51673
portable,ascii,smoothutf8_slackbuf,32,11.09832
portable,ascii,smoothutf8,64,11.83689
portable,ascii,simdutf8,64,15.12693
portable,ascii,std_from_utf8,64,5.91140
portable,ascii,smoothutf8_slack,64,12.92298
portable,ascii,smoothutf8_slackbuf,64,12.97022
portable,ascii,smoothutf8,128,18.15499
portable,ascii,simdutf8,128,22.66638
portable,ascii,std_from_utf8,128,11.31340
portable,ascii,smoothutf8_slack,128,20.03787
portable,ascii,smoothutf8_slackbuf,128,20.24889
portable,ascii,smoothutf8,256,23.44793
portable,ascii,simdutf8,256,30.22969
portable,ascii,std_from_utf8,256,19.44052
portable,ascii,smoothutf8_slack,256,22.87647
portable,ascii,smoothutf8_slackbuf,256,23.32406
portable,ascii,smoothutf8,512,28.68021
portable,ascii,simdutf8,512,42.03431
portable,ascii,std_from_utf8,512,24.35079
portable,ascii,smoothutf8_slack,512,29.57130
portable,ascii,smoothutf8_slackbuf,512,29.53649
portable,ascii,smoothutf8,1024,30.44451
portable,ascii,simdutf8,1024,53.88599
portable,ascii,std_from_utf8,1024,28.56766
portable,ascii,smoothutf8_slack,1024,31.64148
portable,ascii,smoothutf8_slackbuf,1024,31.76585
portable,ascii,smoothutf8,2048,32.08756
portable,ascii,simdutf8,2048,61.75447
portable,ascii,std_from_utf8,2048,30.90926
portable,ascii,smoothutf8_slack,2048,32.75768
portable,ascii,smoothutf8_slackbuf,2048,32.94098
portable,ascii,smoothutf8,4096,27.90561
portable,ascii,simdutf8,4096,63.83469
portable,ascii,std_from_utf8,4096,27.73720
portable,ascii,smoothutf8_slack,4096,28.31154
portable,ascii,smoothutf8_slackbuf,4096,28.34520
portable,ascii,smoothutf8,8192,30.49806
portable,ascii,simdutf8,8192,65.70833
portable,ascii,std_from_utf8,8192,30.54323
portable,ascii,smoothutf8_slack,8192,30.77113
portable,ascii,smoothutf8_slackbuf,8192,30.75253
portable,ascii,smoothutf8,16384,31.97031
portable,ascii,simdutf8,16384,63.13895
portable,ascii,std_from_utf8,16384,32.01122
portable,ascii,smoothutf8_slack,16384,32.10754
portable,ascii,smoothutf8_slackbuf,16384,32.27188
portable,ascii,smoothutf8,32768,32.92541
portable,ascii,simdutf8,32768,65.66733
portable,ascii,std_from_utf8,32768,32.85947
portable,ascii,smoothutf8_slack,32768,33.03698
portable,ascii,smoothutf8_slackbuf,32768,32.93927
portable,ascii,smoothutf8,65536,26.48980
portable,ascii,simdutf8,65536,43.22297
portable,ascii,std_from_utf8,65536,26.19535
portable,ascii,smoothutf8_slack,65536,26.77450
portable,ascii,smoothutf8_slackbuf,65536,26.50821
portable,ascii,smoothutf8,131072,26.54568
portable,ascii,simdutf8,131072,43.28734
portable,ascii,std_from_utf8,131072,26.25620
portable,ascii,smoothutf8_slack,131072,26.55145
portable,ascii,smoothutf8_slackbuf,131072,26.65873
portable,ascii,smoothutf8,262144,26.40957
portable,ascii,simdutf8,262144,43.27047
portable,ascii,std_from_utf8,262144,26.13114
portable,ascii,smoothutf8_slack,262144,26.66717
portable,ascii,smoothutf8_slackbuf,262144,26.61658
portable,ascii,smoothutf8,524288,26.40072
portable,ascii,simdutf8,524288,43.31422
portable,ascii,std_from_utf8,524288,26.25591
portable,ascii,smoothutf8_slack,524288,26.43788
portable,ascii,smoothutf8_slackbuf,524288,26.50677
portable,ascii,smoothutf8,1048576,26.39215
portable,ascii,simdutf8,1048576,43.32575
portable,ascii,std_from_utf8,1048576,26.26510
portable,ascii,smoothutf8_slack,1048576,26.42000
portable,ascii,smoothutf8_slackbuf,1048576,26.48377
portable,ascii,smoothutf8,2097152,23.02128
portable,ascii,simdutf8,2097152,35.45850
portable,ascii,std_from_utf8,2097152,22.65596
portable,ascii,smoothutf8_slack,2097152,23.15995
portable,ascii,smoothutf8_slackbuf,2097152,23.13636
portable,ascii,smoothutf8,4194304,19.87711
portable,ascii,simdutf8,4194304,23.21832
portable,ascii,std_from_utf8,4194304,19.73352
portable,ascii,smoothutf8_slack,4194304,19.80556
portable,ascii,smoothutf8_slackbuf,4194304,19.89027
portable,ascii,smoothutf8,8388608,19.78098
portable,ascii,simdutf8,8388608,22.91190
portable,ascii,std_from_utf8,8388608,19.65854
portable,ascii,smoothutf8_slack,8388608,19.74848
portable,ascii,smoothutf8_slackbuf,8388608,19.73252
portable,ascii,smoothutf8,16777216,19.63803
portable,ascii,simdutf8,16777216,22.87400
portable,ascii,std_from_utf8,16777216,19.58707
portable,ascii,smoothutf8_slack,16777216,19.79502
portable,ascii,smoothutf8_slackbuf,16777216,19.69546
portable,ascii,smoothutf8,33554432,19.63680
portable,ascii,simdutf8,33554432,22.87199
portable,ascii,std_from_utf8,33554432,19.58756
portable,ascii,smoothutf8_slack,33554432,19.79226
portable,ascii,smoothutf8_slackbuf,33554432,19.69372
portable,ascii,smoothutf8,67108864,19.28179
portable,ascii,simdutf8,67108864,22.71901
portable,ascii,std_from_utf8,67108864,19.18060
portable,ascii,smoothutf8_slack,67108864,19.19651
portable,ascii,smoothutf8_slackbuf,67108864,19.20123
portable,ascii,smoothutf8,134217728,11.46684
portable,ascii,simdutf8,134217728,17.24923
portable,ascii,std_from_utf8,134217728,11.21881
portable,ascii,smoothutf8_slack,134217728,11.31222
portable,ascii,smoothutf8_slackbuf,134217728,11.28261
portable,ascii,smoothutf8,268435456,8.95480
portable,ascii,simdutf8,268435456,12.71617
portable,ascii,std_from_utf8,268435456,8.57368
portable,ascii,smoothutf8_slack,268435456,8.68719
portable,ascii,smoothutf8_slackbuf,268435456,8.77532
portable,ascii,smoothutf8,536870912,8.10110
portable,ascii,simdutf8,536870912,11.35951
portable,ascii,std_from_utf8,536870912,7.94420
portable,ascii,smoothutf8_slack,536870912,8.01025
portable,ascii,smoothutf8_slackbuf,536870912,8.00743
simd_avx2,ascii,smoothutf8,1,0.51551
simd_avx2,ascii,simdutf8,1,0.23368
simd_avx2,ascii,std_from_utf8,1,0.23206
simd_avx2,ascii,smoothutf8_slack,1,0.93480
simd_avx2,ascii,smoothutf8_slackbuf,1,0.70469
simd_avx2,ascii,smoothutf8,2,1.04561
simd_avx2,ascii,simdutf8,2,0.41966
simd_avx2,ascii,std_from_utf8,2,0.41858
simd_avx2,ascii,smoothutf8_slack,2,1.87776
simd_avx2,ascii,smoothutf8_slackbuf,2,1.41399
simd_avx2,ascii,smoothutf8,4,2.08583
simd_avx2,ascii,simdutf8,4,0.57585
simd_avx2,ascii,std_from_utf8,4,0.55774
simd_avx2,ascii,smoothutf8_slack,4,3.74955
simd_avx2,ascii,smoothutf8_slackbuf,4,2.83637
simd_avx2,ascii,smoothutf8,8,2.81239
simd_avx2,ascii,simdutf8,8,0.94649
simd_avx2,ascii,std_from_utf8,8,0.90687
simd_avx2,ascii,smoothutf8_slack,8,3.37252
simd_avx2,ascii,smoothutf8_slackbuf,8,3.38340
simd_avx2,ascii,smoothutf8,16,4.82582
simd_avx2,ascii,simdutf8,16,3.37964
simd_avx2,ascii,std_from_utf8,16,3.19802
simd_avx2,ascii,smoothutf8_slack,16,5.58891
simd_avx2,ascii,smoothutf8_slackbuf,16,5.55537
simd_avx2,ascii,smoothutf8,32,10.10111
simd_avx2,ascii,simdutf8,32,4.80349
simd_avx2,ascii,std_from_utf8,32,4.47066
simd_avx2,ascii,smoothutf8_slack,32,11.36192
simd_avx2,ascii,smoothutf8_slackbuf,32,11.25253
simd_avx2,ascii,smoothutf8,64,17.36681
simd_avx2,ascii,simdutf8,64,17.76009
simd_avx2,ascii,std_from_utf8,64,5.94264
simd_avx2,ascii,smoothutf8_slack,64,19.62293
simd_avx2,ascii,smoothutf8_slackbuf,64,17.27671
simd_avx2,ascii,smoothutf8,128,18.59072
simd_avx2,ascii,simdutf8,128,25.57645
simd_avx2,ascii,std_from_utf8,128,11.19021
simd_avx2,ascii,smoothutf8_slack,128,21.30906
simd_avx2,ascii,smoothutf8_slackbuf,128,19.32549
simd_avx2,ascii,smoothutf8,256,26.62586
simd_avx2,ascii,simdutf8,256,32.64935
simd_avx2,ascii,std_from_utf8,256,19.11631
simd_avx2,ascii,smoothutf8_slack,256,28.82027
simd_avx2,ascii,smoothutf8_slackbuf,256,27.37517
simd_avx2,ascii,smoothutf8,512,38.69803
simd_avx2,ascii,simdutf8,512,44.53509
simd_avx2,ascii,std_from_utf8,512,24.59699
simd_avx2,ascii,smoothutf8_slack,512,40.73442
simd_avx2,ascii,smoothutf8_slackbuf,512,39.50925
simd_avx2,ascii,smoothutf8,1024,52.87909
simd_avx2,ascii,simdutf8,1024,57.72498
simd_avx2,ascii,std_from_utf8,1024,28.04347
simd_avx2,ascii,smoothutf8_slack,1024,54.28165
simd_avx2,ascii,smoothutf8_slackbuf,1024,53.30768
simd_avx2,ascii,smoothutf8,2048,58.59210
simd_avx2,ascii,simdutf8,2048,61.53929
simd_avx2,ascii,std_from_utf8,2048,30.93081
simd_avx2,ascii,smoothutf8_slack,2048,59.78774
simd_avx2,ascii,smoothutf8_slackbuf,2048,58.93245
simd_avx2,ascii,smoothutf8,4096,67.11762
simd_avx2,ascii,simdutf8,4096,69.01432
simd_avx2,ascii,std_from_utf8,4096,27.78974
simd_avx2,ascii,smoothutf8_slack,4096,64.83831
simd_avx2,ascii,smoothutf8_slackbuf,4096,63.54016
simd_avx2,ascii,smoothutf8,8192,65.79900
simd_avx2,ascii,simdutf8,8192,66.61481
simd_avx2,ascii,std_from_utf8,8192,30.30664
simd_avx2,ascii,smoothutf8_slack,8192,66.14700
simd_avx2,ascii,smoothutf8_slackbuf,8192,65.49399
simd_avx2,ascii,smoothutf8,16384,62.57449
simd_avx2,ascii,simdutf8,16384,62.88135
simd_avx2,ascii,std_from_utf8,16384,31.95893
simd_avx2,ascii,smoothutf8_slack,16384,62.73141
simd_avx2,ascii,smoothutf8_slackbuf,16384,63.20433
simd_avx2,ascii,smoothutf8,32768,75.39486
simd_avx2,ascii,simdutf8,32768,72.99459
simd_avx2,ascii,std_from_utf8,32768,32.96952
simd_avx2,ascii,smoothutf8_slack,32768,74.56953
simd_avx2,ascii,smoothutf8_slackbuf,32768,71.19297
simd_avx2,ascii,smoothutf8,65536,66.23745
simd_avx2,ascii,simdutf8,65536,65.59605
simd_avx2,ascii,std_from_utf8,65536,26.07560
simd_avx2,ascii,smoothutf8_slack,65536,66.37575
simd_avx2,ascii,smoothutf8_slackbuf,65536,66.35987
simd_avx2,ascii,smoothutf8,131072,67.72278
simd_avx2,ascii,simdutf8,131072,66.78172
simd_avx2,ascii,std_from_utf8,131072,26.13757
simd_avx2,ascii,smoothutf8_slack,131072,67.44589
simd_avx2,ascii,smoothutf8_slackbuf,131072,66.95388
simd_avx2,ascii,smoothutf8,262144,67.58779
simd_avx2,ascii,simdutf8,262144,66.49434
simd_avx2,ascii,std_from_utf8,262144,26.11968
simd_avx2,ascii,smoothutf8_slack,262144,67.98302
simd_avx2,ascii,smoothutf8_slackbuf,262144,67.69086
simd_avx2,ascii,smoothutf8,524288,67.57002
simd_avx2,ascii,simdutf8,524288,66.44638
simd_avx2,ascii,std_from_utf8,524288,26.20097
simd_avx2,ascii,smoothutf8_slack,524288,68.13956
simd_avx2,ascii,smoothutf8_slackbuf,524288,67.43750
simd_avx2,ascii,smoothutf8,1048576,43.40471
simd_avx2,ascii,simdutf8,1048576,43.63550
simd_avx2,ascii,std_from_utf8,1048576,26.12527
simd_avx2,ascii,smoothutf8_slack,1048576,43.29694
simd_avx2,ascii,smoothutf8_slackbuf,1048576,43.45686
simd_avx2,ascii,smoothutf8,2097152,35.47460
simd_avx2,ascii,simdutf8,2097152,35.40130
simd_avx2,ascii,std_from_utf8,2097152,22.57348
simd_avx2,ascii,smoothutf8_slack,2097152,35.30467
simd_avx2,ascii,smoothutf8_slackbuf,2097152,35.43662
simd_avx2,ascii,smoothutf8,4194304,22.91593
simd_avx2,ascii,simdutf8,4194304,23.03893
simd_avx2,ascii,std_from_utf8,4194304,19.69273
simd_avx2,ascii,smoothutf8_slack,4194304,22.91997
simd_avx2,ascii,smoothutf8_slackbuf,4194304,23.04029
simd_avx2,ascii,smoothutf8,8388608,22.86228
simd_avx2,ascii,simdutf8,8388608,22.80689
simd_avx2,ascii,std_from_utf8,8388608,19.67735
simd_avx2,ascii,smoothutf8_slack,8388608,22.86831
simd_avx2,ascii,smoothutf8_slackbuf,8388608,22.81155
simd_avx2,ascii,smoothutf8,16777216,22.83555
simd_avx2,ascii,simdutf8,16777216,22.83489
simd_avx2,ascii,std_from_utf8,16777216,19.59051
simd_avx2,ascii,smoothutf8_slack,16777216,22.76369
simd_avx2,ascii,smoothutf8_slackbuf,16777216,22.83589
simd_avx2,ascii,smoothutf8,33554432,22.83856
simd_avx2,ascii,simdutf8,33554432,22.83689
simd_avx2,ascii,std_from_utf8,33554432,19.59125
simd_avx2,ascii,smoothutf8_slack,33554432,22.87701
simd_avx2,ascii,smoothutf8_slackbuf,33554432,22.95263
simd_avx2,ascii,smoothutf8,67108864,22.77033
simd_avx2,ascii,simdutf8,67108864,22.65971
simd_avx2,ascii,std_from_utf8,67108864,19.16120
simd_avx2,ascii,smoothutf8_slack,67108864,22.77282
simd_avx2,ascii,smoothutf8_slackbuf,67108864,22.66135
simd_avx2,ascii,smoothutf8,134217728,17.29290
simd_avx2,ascii,simdutf8,134217728,17.37124
simd_avx2,ascii,std_from_utf8,134217728,11.23899
simd_avx2,ascii,smoothutf8_slack,134217728,17.22190
simd_avx2,ascii,smoothutf8_slackbuf,134217728,17.25018
simd_avx2,ascii,smoothutf8,268435456,12.70132
simd_avx2,ascii,simdutf8,268435456,12.57292
simd_avx2,ascii,std_from_utf8,268435456,8.61000
simd_avx2,ascii,smoothutf8_slack,268435456,12.61289
simd_avx2,ascii,smoothutf8_slackbuf,268435456,12.56976
simd_avx2,ascii,smoothutf8,536870912,11.39575
simd_avx2,ascii,simdutf8,536870912,11.24632
simd_avx2,ascii,std_from_utf8,536870912,7.99693
simd_avx2,ascii,smoothutf8_slack,536870912,11.34378
simd_avx2,ascii,smoothutf8_slackbuf,536870912,11.34353