主要观点:2018 年加入重设计的 Python 运行时项目,目标用 30 年 VM 工程研究重写以提升性能,仅用 UTF-8 编码字符串。后实现importlib
等,2019 年 10 月开始基准测试“Django 工作负载”,但在 Django URL 解析中遇到瓶颈,如strIndex
占用 90%运行时间,原因是 UTF-8 下索引字符串是 O(N)操作。之前 hackily 实现的str.rpartition
函数存在问题,需多次反转字符串等操作,后重写为在 Python 中进行表面实现,在 C++中实现快速核心字符串工具。性能分析可能只揭示部分问题,如仅看 C++性能分析会以为需加快strIndex
,实际是strIndex
被其他函数频繁调用,多语言分析器可揭示更多。同时提到 UTF-8 编码细节及相关趣事。
关键信息:2018 年加入新 Python 运行时项目,2019 年 10 月开始基准测试,遇到 Django URL 解析瓶颈及strIndex
问题,重写str.rpartition
函数,性能分析的局限性及 UTF-8 编码相关。
重要细节:最初的 C++核心只能运行 CPython 编译的字节码,str.rpartition
的原始实现及问题,重写后的实现及相关 C++代码,无具体基准测试数字但记得strIndex
从性能分析中消失,UTF-8 编码中索引字符串的操作及相关趣事。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。