主要观点:批评软件容易,但 C++和 C 标准库经住了时间考验,虽不完美,如<string>
等头文件代码量大、过时、易出错等。升级StringZilla
至 v3 后,大部分 C++20 字符串功能以 C++11 兼容形式实现,还增加了一些其他语言常见的扩展,用sz::string
和sz::string_view
替代std::string
和std::string_view
可实现即插即用替换。
关键信息:
<string>
等头文件代码量大,减慢编译速度,代码过时、易出错且接口难区分。std::string
的replace
函数有 14 种变体,参数顺序和意义不同,结果多样。std::string
的substr
方法边界检查不对称,对第二个参数无检查,编译器也不警告负参数。- STL 缺少一些基本实用功能,如懒加载范围的分割、搜索和批量替换等,StringZilla 提供了这些功能。
- C++内存分配器在大数据应用中有问题,StringZilla 提供了“try”版本的分配函数。
- STL 的
std::string
在某些操作上调用 LibC,性能不如 StringZilla,StringZilla 在 substring 搜索等方面比 LibC 和 STL 快很多。
重要细节:
- 介绍了 Python 对负索引的支持更直观,StringZilla 中可使用负索引并得到预期结果。
- 详细说明了 StringZilla 中各种分割、搜索、批量替换等功能的实现和用法。
- 给出了性能测试数据,表明 StringZilla 在 substring 搜索等方面的性能优势。
- 提到 StringZilla 有很多“工作中”的功能,如 Levenshtein 编辑距离等,成熟后可能成为新的标准库基线实现。
- 本周 StringZilla 有新吉祥物和改进的 Rust 支持,且谷歌转向 Arm 处理器,StringZilla 在搜索方面性能提升。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。