无操作编译器基准测试

主要观点:尝试制作“快速构建”的语言/编译器,从解析/词法开始,对不同语言的编译器和解释器进行性能测试。
关键信息:

  • 生成 1000 万行不同语言(C、Python、Lua、JavaScript、Luv)的文件进行测试,文件大小在 193M 到 237M 之间。
  • 测试在 Windows 11 系统的 Ryzen 9 24 核 3900X 电脑上进行,多数工具单线程运行。
  • C 编译器中,msvc 版本 19.41.34123 语法检查需 43.719s,clang 版本 19.1.0 语法检查需 22.156s,clang-17 语法检查需 2m21s,tcc 运行 dumbbench.c 需 11.172s。
  • Python 3.9.2 运行 dumbbench.py 需 53.609s。
  • PUC Rio 5.4.7 的 Lua 运行 dumbbench.lua 需 6.359s,LuaJIT 2.1 需 4.750s。
  • Bun 运行 dumbbench.js 出现“Maximum call stack size exceeded”错误,需 7.437s,Node 需 5.391s。
  • 按性能从差到好排序:Bun(失败)、Python(53.6s)、msvc(43.7s)、clang(22.1s)、tcc(11.1s)、Lua(6.4s)、Node(5.4s)、LuaJIT(4.8s),后添加 Rust 需 436s(7 分 16 秒)。
    重要细节:
  • Lua 因实现限制将文件拆分为多个子文件。
  • 测试文件无类似#include的行为,Windows 文件系统对性能影响不大。
  • 简单 Windows C 程序读取 200M 文件约需 50 - 80ms,顺序扫描并每 4 个字符写一个字节约需 80ms,约 150 - 200ms 为基准线。
阅读 7
0 条评论