通过不犯傻来优化 Django

主要观点: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 编码中索引字符串的操作及相关趣事。

阅读 7
0 条评论