7 个版本

0.1.6 2022年5月22日
0.1.5 2022年5月15日

文本处理 中排名 #1557

每月下载量 25

MIT 许可证

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]

无运行时依赖