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 文本处理
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 |
重复 "錆"(仅 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 |
See performance branch for details.
未来计划
sse (128bit)
avx512 UTF-8 的代码点如何用 AVX-512 高速计数