7 个版本
0.1.6 | 2022年5月22日 |
---|---|
0.1.5 | 2022年5月15日 |
在 文本处理 中排名 #1557
每月下载量 25
1MB
191 行
case-conv
快速且准确的案例转换。
提供对 ascii 的快速案例转换,但发现非 ascii 字符时会回退到正确的 unicode 版本。
基准测试结果
使用《麦克白》剧本的副本进行测试。一个只包含 ascii,另一个在文本末尾直接包含 4 个宽 UTF-8 字符。
在 Linux 上的 Ryzen 5 3600X 上进行测试
lowercase/ascii time: [8.6785 us 8.6962 us 8.7166 us] *
lowercase/unicode time: [8.9324 us 8.9473 us 8.9647 us] *
lowercase/ascii_std time: [520.37 us 521.49 us 522.65 us]
lowercase/unicode_std time: [519.91 us 520.64 us 521.47 us]
uppercase/ascii time: [8.7429 us 8.7534 us 8.7635 us] *
uppercase/unicode time: [8.7853 us 8.7972 us 8.8102 us] *
uppercase/ascii_std time: [439.54 us 440.59 us 441.86 us]
uppercase/unicode_std time: [441.31 us 442.10 us 442.94 us]
在 Apple M1 Macos Monterey 上进行测试
lowercase/ascii time: [4.4029 us 4.4085 us 4.4152 us] *
lowercase/unicode time: [4.4530 us 4.4559 us 4.4597 us] *
lowercase/ascii_std time: [279.34 us 279.42 us 279.50 us]
lowercase/unicode_std time: [283.05 us 283.86 us 284.66 us]
uppercase/ascii time: [4.3839 us 4.3929 us 4.4033 us] *
uppercase/unicode time: [4.4758 us 4.4844 us 4.4921 us] *
uppercase/ascii_std time: [246.35 us 247.50 us 248.85 us]
uppercase/unicode_std time: [249.75 us 250.72 us 251.78 us]
is_ascii
在开发这个库的过程中,我发现了一种优化 is_ascii
方法的方法。它使用与 std 实现 similar 的技巧,但不关心尴尬的边缘情况,而是将一些技巧展开到 16 次(最终,一次检查 128 字节)
使用《麦克白》剧本的副本进行测试
在 Linux 上的 Ryzen 5 3600X 上进行测试
is_ascii/case_conv time: [3.7527 us 3.7584 us 3.7646 us] *
is_ascii/std_lib time: [6.8951 us 6.9151 us 6.9367 us]
在 Apple M1 Macos Monterey 上进行测试
is_ascii/case_conv time: [3.1531 us 3.1571 us 3.1624 us] *
is_ascii/std_lib time: [4.3892 us 4.3938 us 4.4004 us]