smoothutf8 0.1.0

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.10572
portable,ascii,simdutf8,1,0.17614
portable,ascii,std_from_utf8,1,0.23065
portable,ascii,smoothutf8_slack,1,0.46727
portable,ascii,smoothutf8,2,0.18473
portable,ascii,simdutf8,2,0.31338
portable,ascii,std_from_utf8,2,0.40051
portable,ascii,smoothutf8_slack,2,0.93817
portable,ascii,smoothutf8,4,0.42454
portable,ascii,simdutf8,4,0.47290
portable,ascii,std_from_utf8,4,0.51059
portable,ascii,smoothutf8_slack,4,1.87050
portable,ascii,smoothutf8,8,3.43187
portable,ascii,simdutf8,8,0.73102
portable,ascii,std_from_utf8,8,0.83365
portable,ascii,smoothutf8_slack,8,4.14935
portable,ascii,smoothutf8,16,6.21322
portable,ascii,simdutf8,16,2.27857
portable,ascii,std_from_utf8,16,2.84873
portable,ascii,smoothutf8_slack,16,6.85174
portable,ascii,smoothutf8,32,10.34192
portable,ascii,simdutf8,32,3.97990
portable,ascii,std_from_utf8,32,4.28983
portable,ascii,smoothutf8_slack,32,11.28448
portable,ascii,smoothutf8,64,12.12216
portable,ascii,simdutf8,64,14.23496
portable,ascii,std_from_utf8,64,5.90087
portable,ascii,smoothutf8_slack,64,14.23871
portable,ascii,smoothutf8,128,18.39422
portable,ascii,simdutf8,128,24.29818
portable,ascii,std_from_utf8,128,11.28021
portable,ascii,smoothutf8_slack,128,19.33834
portable,ascii,smoothutf8,256,18.12518
portable,ascii,simdutf8,256,34.92085
portable,ascii,std_from_utf8,256,19.54892
portable,ascii,smoothutf8_slack,256,18.07297
portable,ascii,smoothutf8,512,29.05418
portable,ascii,simdutf8,512,53.38945
portable,ascii,std_from_utf8,512,24.44191
portable,ascii,smoothutf8_slack,512,28.41699
portable,ascii,smoothutf8,1024,28.15690
portable,ascii,simdutf8,1024,62.08817
portable,ascii,std_from_utf8,1024,28.09883
portable,ascii,smoothutf8_slack,1024,30.99666
portable,ascii,smoothutf8,2048,27.51910
portable,ascii,simdutf8,2048,65.27992
portable,ascii,std_from_utf8,2048,30.68105
portable,ascii,smoothutf8_slack,2048,32.40263
portable,ascii,smoothutf8,4096,27.80392
portable,ascii,simdutf8,4096,80.92273
portable,ascii,std_from_utf8,4096,27.70296
portable,ascii,smoothutf8_slack,4096,28.28006
portable,ascii,smoothutf8,8192,30.43722
portable,ascii,simdutf8,8192,68.22315
portable,ascii,std_from_utf8,8192,30.35005
portable,ascii,smoothutf8_slack,8192,30.75873
portable,ascii,smoothutf8,16384,32.17389
portable,ascii,simdutf8,16384,64.09371
portable,ascii,std_from_utf8,16384,31.94019
portable,ascii,smoothutf8_slack,16384,32.08324
portable,ascii,smoothutf8,32768,32.85381
portable,ascii,simdutf8,32768,79.62631
portable,ascii,std_from_utf8,32768,32.82872
portable,ascii,smoothutf8_slack,32768,33.03769
portable,ascii,smoothutf8,65536,26.28786
portable,ascii,simdutf8,65536,69.66768
portable,ascii,std_from_utf8,65536,25.95142
portable,ascii,smoothutf8_slack,65536,26.39929
portable,ascii,smoothutf8,131072,26.48693
portable,ascii,simdutf8,131072,43.47543
portable,ascii,std_from_utf8,131072,26.06279
portable,ascii,smoothutf8_slack,131072,26.32982
portable,ascii,smoothutf8,262144,26.53991
portable,ascii,simdutf8,262144,43.47775
portable,ascii,std_from_utf8,262144,26.13534
portable,ascii,smoothutf8_slack,262144,26.55896
portable,ascii,smoothutf8,524288,26.40072
portable,ascii,simdutf8,524288,43.46846
portable,ascii,std_from_utf8,524288,26.11269
portable,ascii,smoothutf8_slack,524288,26.42501
portable,ascii,smoothutf8,1048576,26.45794
portable,ascii,simdutf8,1048576,43.17443
portable,ascii,std_from_utf8,1048576,26.23334
portable,ascii,smoothutf8_slack,1048576,26.52261
portable,ascii,smoothutf8,2097152,23.66707
portable,ascii,simdutf8,2097152,37.69784
portable,ascii,std_from_utf8,2097152,23.14129
portable,ascii,smoothutf8_slack,2097152,23.72630
portable,ascii,smoothutf8,4194304,19.81661
portable,ascii,simdutf8,4194304,22.98470
portable,ascii,std_from_utf8,4194304,19.74748
portable,ascii,smoothutf8_slack,4194304,19.81259
portable,ascii,smoothutf8,8388608,19.68975
portable,ascii,simdutf8,8388608,22.90586
portable,ascii,std_from_utf8,8388608,19.65063
portable,ascii,smoothutf8_slack,8388608,19.71460
portable,ascii,smoothutf8,16777216,19.68926
portable,ascii,simdutf8,16777216,22.85593
portable,ascii,std_from_utf8,16777216,19.57922
portable,ascii,smoothutf8_slack,16777216,19.63581
portable,ascii,smoothutf8,33554432,19.73227
portable,ascii,simdutf8,33554432,22.82521
portable,ascii,std_from_utf8,33554432,19.58143
portable,ascii,smoothutf8_slack,33554432,19.78975
portable,ascii,smoothutf8,67108864,19.29251
portable,ascii,simdutf8,67108864,22.73968
portable,ascii,std_from_utf8,67108864,19.08047
portable,ascii,smoothutf8_slack,67108864,19.28834
portable,ascii,smoothutf8,134217728,11.49637
portable,ascii,simdutf8,134217728,17.29697
portable,ascii,std_from_utf8,134217728,11.30812
portable,ascii,smoothutf8_slack,134217728,11.43223
portable,ascii,smoothutf8,268435456,8.96732
portable,ascii,simdutf8,268435456,12.54390
portable,ascii,std_from_utf8,268435456,8.77747
portable,ascii,smoothutf8_slack,268435456,8.72631
portable,ascii,smoothutf8,536870912,8.13921
portable,ascii,simdutf8,536870912,11.33093
portable,ascii,std_from_utf8,536870912,8.12651
portable,ascii,smoothutf8_slack,536870912,8.16007
simd_avx2,ascii,smoothutf8,1,0.09632
simd_avx2,ascii,simdutf8,1,0.23054
simd_avx2,ascii,std_from_utf8,1,0.23193
simd_avx2,ascii,smoothutf8_slack,1,0.46868
simd_avx2,ascii,smoothutf8,2,0.17605
simd_avx2,ascii,simdutf8,2,0.40316
simd_avx2,ascii,std_from_utf8,2,0.39884
simd_avx2,ascii,smoothutf8_slack,2,0.93398
simd_avx2,ascii,smoothutf8,4,0.38645
simd_avx2,ascii,simdutf8,4,0.49047
simd_avx2,ascii,std_from_utf8,4,0.48023
simd_avx2,ascii,smoothutf8_slack,4,1.87389
simd_avx2,ascii,smoothutf8,8,2.68354
simd_avx2,ascii,simdutf8,8,0.81398
simd_avx2,ascii,std_from_utf8,8,0.80936
simd_avx2,ascii,smoothutf8_slack,8,4.09215
simd_avx2,ascii,smoothutf8,16,4.62180
simd_avx2,ascii,simdutf8,16,3.08960
simd_avx2,ascii,std_from_utf8,16,2.69870
simd_avx2,ascii,smoothutf8_slack,16,6.68813
simd_avx2,ascii,smoothutf8,32,8.54375
simd_avx2,ascii,simdutf8,32,4.57329
simd_avx2,ascii,std_from_utf8,32,4.32513
simd_avx2,ascii,smoothutf8_slack,32,13.76296
simd_avx2,ascii,smoothutf8,64,15.84261
simd_avx2,ascii,simdutf8,64,19.31704
simd_avx2,ascii,std_from_utf8,64,5.92080
simd_avx2,ascii,smoothutf8_slack,64,22.47366
simd_avx2,ascii,smoothutf8,128,27.17950
simd_avx2,ascii,simdutf8,128,30.04645
simd_avx2,ascii,std_from_utf8,128,11.33168
simd_avx2,ascii,smoothutf8_slack,128,29.94305
simd_avx2,ascii,smoothutf8,256,39.06196
simd_avx2,ascii,simdutf8,256,38.15186
simd_avx2,ascii,std_from_utf8,256,19.01113
simd_avx2,ascii,smoothutf8_slack,256,38.85127
simd_avx2,ascii,smoothutf8,512,60.45632
simd_avx2,ascii,simdutf8,512,58.99990
simd_avx2,ascii,std_from_utf8,512,24.31106
simd_avx2,ascii,smoothutf8_slack,512,60.11260
simd_avx2,ascii,smoothutf8,1024,60.07776
simd_avx2,ascii,simdutf8,1024,62.49504
simd_avx2,ascii,std_from_utf8,1024,28.21104
simd_avx2,ascii,smoothutf8_slack,1024,62.60581
simd_avx2,ascii,smoothutf8,2048,82.96066
simd_avx2,ascii,simdutf8,2048,82.98232
simd_avx2,ascii,std_from_utf8,2048,30.84927
simd_avx2,ascii,smoothutf8_slack,2048,83.39594
simd_avx2,ascii,smoothutf8,4096,66.90339
simd_avx2,ascii,simdutf8,4096,67.53828
simd_avx2,ascii,std_from_utf8,4096,27.93218
simd_avx2,ascii,smoothutf8_slack,4096,66.97151
simd_avx2,ascii,smoothutf8,8192,68.05883
simd_avx2,ascii,simdutf8,8192,68.01029
simd_avx2,ascii,std_from_utf8,8192,30.64383
simd_avx2,ascii,smoothutf8_slack,8192,67.95577
simd_avx2,ascii,smoothutf8,16384,75.43400
simd_avx2,ascii,simdutf8,16384,75.69970
simd_avx2,ascii,std_from_utf8,16384,32.05022
simd_avx2,ascii,smoothutf8_slack,16384,75.69970
simd_avx2,ascii,smoothutf8,32768,80.04401
simd_avx2,ascii,simdutf8,32768,79.47700
simd_avx2,ascii,std_from_utf8,32768,32.96098
simd_avx2,ascii,smoothutf8_slack,32768,79.96431
simd_avx2,ascii,smoothutf8,65536,69.07868
simd_avx2,ascii,simdutf8,65536,69.24168
simd_avx2,ascii,std_from_utf8,65536,26.08786
simd_avx2,ascii,smoothutf8_slack,65536,68.94135
simd_avx2,ascii,smoothutf8,131072,68.39439
simd_avx2,ascii,simdutf8,131072,68.65211
simd_avx2,ascii,std_from_utf8,131072,26.22067
simd_avx2,ascii,smoothutf8_slack,131072,68.27199
simd_avx2,ascii,smoothutf8,262144,69.02282
simd_avx2,ascii,simdutf8,262144,68.74877
simd_avx2,ascii,std_from_utf8,262144,26.11716
simd_avx2,ascii,smoothutf8_slack,262144,68.86901
simd_avx2,ascii,smoothutf8,524288,68.38960
simd_avx2,ascii,simdutf8,524288,68.62509
simd_avx2,ascii,std_from_utf8,524288,26.09874
simd_avx2,ascii,smoothutf8_slack,524288,68.54802
simd_avx2,ascii,smoothutf8,1048576,43.17062
simd_avx2,ascii,simdutf8,1048576,43.16489
simd_avx2,ascii,std_from_utf8,1048576,26.21926
simd_avx2,ascii,smoothutf8_slack,1048576,43.18016
simd_avx2,ascii,smoothutf8,2097152,35.29000
simd_avx2,ascii,simdutf8,2097152,35.50426
simd_avx2,ascii,std_from_utf8,2097152,22.59254
simd_avx2,ascii,smoothutf8_slack,2097152,35.41478
simd_avx2,ascii,smoothutf8,4194304,23.25426
simd_avx2,ascii,simdutf8,4194304,23.19626
simd_avx2,ascii,std_from_utf8,4194304,19.68082
simd_avx2,ascii,smoothutf8_slack,4194304,23.18249
simd_avx2,ascii,smoothutf8,8388608,22.78095
simd_avx2,ascii,simdutf8,8388608,22.91526
simd_avx2,ascii,std_from_utf8,8388608,19.66349
simd_avx2,ascii,smoothutf8_slack,8388608,22.81888
simd_avx2,ascii,smoothutf8,16777216,22.82721
simd_avx2,ascii,simdutf8,16777216,22.86831
simd_avx2,ascii,std_from_utf8,16777216,19.59690
simd_avx2,ascii,smoothutf8_slack,16777216,22.83022
simd_avx2,ascii,smoothutf8,33554432,22.83022
simd_avx2,ascii,simdutf8,33554432,22.86864
simd_avx2,ascii,std_from_utf8,33554432,19.58265
simd_avx2,ascii,smoothutf8_slack,33554432,22.86697
simd_avx2,ascii,smoothutf8,67108864,22.56318
simd_avx2,ascii,simdutf8,67108864,22.66875
simd_avx2,ascii,std_from_utf8,67108864,18.90845
simd_avx2,ascii,smoothutf8_slack,67108864,22.67368
simd_avx2,ascii,smoothutf8,134217728,17.26686
simd_avx2,ascii,simdutf8,134217728,17.19277
simd_avx2,ascii,std_from_utf8,134217728,11.36777
simd_avx2,ascii,smoothutf8_slack,134217728,17.32238
simd_avx2,ascii,smoothutf8,268435456,12.75055
simd_avx2,ascii,simdutf8,268435456,12.67427
simd_avx2,ascii,std_from_utf8,268435456,8.70413
simd_avx2,ascii,smoothutf8_slack,268435456,12.64350
simd_avx2,ascii,smoothutf8,536870912,11.38797
simd_avx2,ascii,simdutf8,536870912,11.35589
simd_avx2,ascii,std_from_utf8,536870912,8.00077
simd_avx2,ascii,smoothutf8_slack,536870912,11.36777
avx2,ascii,std_from_utf8,8,0.81851
avx2,ascii,smoothutf8_slack,8,3.39048
avx2,ascii,std_from_utf8,32,4.29385
avx2,ascii,smoothutf8_slack,32,12.95979
avx2,ascii,std_from_utf8,128,11.19021
avx2,ascii,smoothutf8_slack,128,27.45113
avx2,ascii,std_from_utf8,1024,27.83150
avx2,ascii,smoothutf8_slack,1024,42.25594
avx2,ascii,std_from_utf8,16384,32.10011
avx2,ascii,smoothutf8_slack,16384,41.56576
avx2,ascii,std_from_utf8,65536,26.13813
avx2,ascii,smoothutf8_slack,65536,43.21073
avx2,ascii,std_from_utf8,1048576,26.16306
avx2,ascii,smoothutf8_slack,1048576,38.74018
avx2,sparse,std_from_utf8,8,0.81157
avx2,sparse,smoothutf8_slack,8,3.39141
avx2,sparse,std_from_utf8,32,1.39563
avx2,sparse,smoothutf8_slack,32,2.29072
avx2,sparse,std_from_utf8,128,1.53773
avx2,sparse,smoothutf8_slack,128,2.62454
avx2,sparse,std_from_utf8,1024,1.68146
avx2,sparse,smoothutf8_slack,1024,2.77926
avx2,sparse,std_from_utf8,16384,1.67847
avx2,sparse,smoothutf8_slack,16384,2.78120
avx2,sparse,std_from_utf8,65536,1.72826
avx2,sparse,smoothutf8_slack,65536,2.78432
avx2,sparse,std_from_utf8,1048576,1.68431
avx2,sparse,smoothutf8_slack,1048576,2.78255
avx2,mixed,std_from_utf8,32,0.87241
avx2,mixed,smoothutf8_slack,32,1.40002
avx2,mixed,std_from_utf8,1024,0.98033
avx2,mixed,smoothutf8_slack,1024,1.31867
avx2,mixed,std_from_utf8,16384,0.99497
avx2,mixed,smoothutf8_slack,16384,1.31360
avx2,mixed,std_from_utf8,65536,1.00935
avx2,mixed,smoothutf8_slack,65536,1.30817
avx2,mixed,std_from_utf8,1048576,0.97510
avx2,mixed,smoothutf8_slack,1048576,1.31735
avx2,multibyte,std_from_utf8,8,0.84976
avx2,multibyte,smoothutf8_slack,8,0.94934
avx2,multibyte,std_from_utf8,32,1.07652
avx2,multibyte,smoothutf8_slack,32,1.16324
avx2,multibyte,std_from_utf8,128,1.15670
avx2,multibyte,smoothutf8_slack,128,1.27112
avx2,multibyte,std_from_utf8,1024,1.15481
avx2,multibyte,smoothutf8_slack,1024,1.30447
avx2,multibyte,std_from_utf8,16384,1.18184
avx2,multibyte,smoothutf8_slack,16384,1.30540
avx2,multibyte,std_from_utf8,65536,1.18605
avx2,multibyte,smoothutf8_slack,65536,1.30517
avx2,multibyte,std_from_utf8,1048576,1.19070
avx2,multibyte,smoothutf8_slack,1048576,1.30113
v3,ascii,std_from_utf8,8,0.86790
v3,ascii,smoothutf8_slack,8,2.93480
v3,ascii,std_from_utf8,32,4.38831
v3,ascii,smoothutf8_slack,32,11.47523
v3,ascii,std_from_utf8,128,11.36409
v3,ascii,smoothutf8_slack,128,25.09088
v3,ascii,std_from_utf8,1024,28.54116
v3,ascii,smoothutf8_slack,1024,38.44376
v3,ascii,std_from_utf8,16384,32.04483
v3,ascii,smoothutf8_slack,16384,41.72374
v3,ascii,std_from_utf8,65536,26.11241
v3,ascii,smoothutf8_slack,65536,43.17405
v3,ascii,std_from_utf8,1048576,26.26510
v3,ascii,smoothutf8_slack,1048576,38.62679
v3,sparse,std_from_utf8,8,0.85765
v3,sparse,smoothutf8_slack,8,2.94396
v3,sparse,std_from_utf8,32,1.48197
v3,sparse,smoothutf8_slack,32,2.94112
v3,sparse,std_from_utf8,128,1.56363
v3,sparse,smoothutf8_slack,128,3.44536
v3,sparse,std_from_utf8,1024,1.65448
v3,sparse,smoothutf8_slack,1024,3.75566
v3,sparse,std_from_utf8,16384,1.67390
v3,sparse,smoothutf8_slack,16384,3.75509
v3,sparse,std_from_utf8,65536,1.72499
v3,sparse,smoothutf8_slack,65536,3.75670
v3,sparse,std_from_utf8,1048576,1.68506
v3,sparse,smoothutf8_slack,1048576,3.74952
v3,mixed,std_from_utf8,32,0.90850
v3,mixed,smoothutf8_slack,32,1.84192
v3,mixed,std_from_utf8,1024,0.97731
v3,mixed,smoothutf8_slack,1024,1.84968
v3,mixed,std_from_utf8,16384,1.01266
v3,mixed,smoothutf8_slack,16384,1.83808
v3,mixed,std_from_utf8,65536,1.00703
v3,mixed,smoothutf8_slack,65536,1.83752
v3,mixed,std_from_utf8,1048576,0.98993
v3,mixed,smoothutf8_slack,1048576,1.83844
v3,multibyte,std_from_utf8,8,0.83007
v3,multibyte,smoothutf8_slack,8,1.20066
v3,multibyte,std_from_utf8,32,1.04757
v3,multibyte,smoothutf8_slack,32,1.55756
v3,multibyte,std_from_utf8,128,1.11850
v3,multibyte,smoothutf8_slack,128,1.78518
v3,multibyte,std_from_utf8,1024,1.12293
v3,multibyte,smoothutf8_slack,1024,1.84660
v3,multibyte,std_from_utf8,16384,1.14693
v3,multibyte,smoothutf8_slack,16384,1.85301
v3,multibyte,std_from_utf8,65536,1.13129
v3,multibyte,smoothutf8_slack,65536,1.84675
v3,multibyte,std_from_utf8,1048576,1.16392
v3,multibyte,smoothutf8_slack,1048576,1.84980