#counting #length #chars #count #faster

no-std faster-chars-count

一个库,用于更快地计算字符长度,比 Chars::count() 快

6 个版本

0.3.0 2021 年 11 月 18 日
0.2.1 2021 年 5 月 18 日
0.1.7 2021 年 4 月 29 日
0.1.5 2021 年 3 月 5 日

#1057 in 文本处理

MIT 许可证

9KB
124 lines

一个库,用于更快地计算字符长度,比 Chars::count()

灵感来自 UTF-8 的代码点如何快速计数UTF-8 的代码点如何更快计数

用法

//before
"Hello, world!".chars().count();

//after
"Hello, world!".chars_count();

基准测试

重复 "a"(仅 1 字节 UTF-8)

长度 std chars_count chars_count(avx2)
1 1.3906 ns 3.1607 ns 2.1750 ns
10 4.7844 ns 5.6093 ns 7.2465 ns
100 47.630 ns 10.607 ns 11.265 ns
1000 475.17 ns 67.364 ns 17.839 ns
10000 4.7231 us 604.66 ns 91.757 ns

bench 1byte

重复 "錆"(仅 3 字节 UTF-8)

长度 std chars_count chars_count(avx2)
1 2.4324 ns 4.5069 ns 4.2662 ns
10 13.947 ns 10.267 ns 11.984 ns
100 143.74 ns 23.935 ns 28.758 ns
1000 1.4210 us 193.98 ns 40.435 ns
10000 1.8505 us 270.60 ns 14.206 us

bench 3byte

See performance branch for details.

未来计划

sse (128bit)

avx512 UTF-8 的代码点如何用 AVX-512 高速计数

无运行时依赖

功能