介绍
这个库使用 nix 包管理系统管理各种语言的开发环境,它同时集成了一些基础的性能测试代码。这样做的一个优点是,你可以把这个库 clone 下来在自己的机器上做测试,而不必担心扰乱原有的环境。
目前库里面有两种语言四种环境:
- javascript/bun
- javascript/nodejs
- javascript/quickjs
- scheme/chezscheme
目前的 benchmark 主要集中于基础的向量操作、字符串操作、递归操作,考察的主要是各种语言环境的优化能力和优化结果。
在 v 站发帖,主要是希望有朋友能来帮忙做如下工作:
- 贡献 Go 语言的相关 benchmark ,而且一定要和已有的代码对标,就是原来的代码是什么风格,那么你 go 应当用同样的风格去写代码。原来是用递归实现的,你不能强行拆成用循环实现;
- 贡献各种国产编程语言的 benchmark ,要求同 go 。不过很多国产编程语言在 nix 包管理器里面没有打包,大概需要先通过 flake.nix 实现一个自己的打包。
补充
这个项目的不足在于 3 点:
- 其实 benchmark 主要用递归实现,可能对于一些语言的优化不友好。但是这里主要考虑的是 benchmark 的可比性,因为递归是标配。你用这个语言的高级特性,我用那个语言的高级特性,那就没法好好对比了。
- 目前测试使用的是 linux 一般标配的 time 命令(注意,不是 bash 的内置关键字)。这实际上测试的时候,就不可避免受到语言环境的启动时间影响——我们测的其实是各种环境跑脚本的性能,只不过有些脚本跑的时间长,启动时间可以忽略。这对于 Java 之类的语言可能不友好,而对于 C 之类的语言似乎又有优势。
- 目前测试没有加入 C 和 rust 之类的语言,因为它们一般性的需要编译一个可执行文件,这里面的时间消耗的组配和已有编程语言不可比。