# 介绍
[这个库]( https://github.com/ufo5260987423/various-program-languages-benchmark)使用 nix 包管理系统管理各种语言的开发环境,它同时集成了一些基础的性能测试代码。这样做的一个优点是,你可以把这个库 clone 下来在自己的机器上做测试,而不必担心扰乱原有的环境。

目前库里面有两种语言四种环境:
1. javascript/bun
2. javascript/nodejs
3. javascript/quickjs
4. scheme/chezscheme

目前的 benchmark 主要集中于基础的向量操作、字符串操作、递归操作,考察的主要是各种语言环境的优化能力和优化结果。

在 v 站发帖,主要是希望有朋友能来帮忙做如下工作:
1. 贡献 Go 语言的相关 benchmark ,而且一定要和已有的代码对标,就是原来的代码是什么风格,那么你 go 应当用同样的风格去写代码。原来是用递归实现的,你不能强行拆成用循环实现;
2. 贡献各种国产编程语言的 benchmark ,要求同 go 。不过很多国产编程语言在 nix 包管理器里面没有打包,大概需要先通过 flake.nix 实现一个自己的打包。

# 补充
这个项目的不足在于 3 点:
1. 其实 benchmark 主要用递归实现,可能对于一些语言的优化不友好。但是这里主要考虑的是 benchmark 的可比性,因为递归是标配。你用这个语言的高级特性,我用那个语言的高级特性,那就没法好好对比了。
2. 目前测试使用的是 linux 一般标配的 time 命令(注意,不是 bash 的内置关键字)。这实际上测试的时候,就不可避免受到语言环境的启动时间影响——我们测的其实是各种环境跑脚本的性能,只不过有些脚本跑的时间长,启动时间可以忽略。这对于 Java 之类的语言可能不友好,而对于 C 之类的语言似乎又有优势。
3. 目前测试没有加入 C 和 rust 之类的语言,因为它们一般性的需要编译一个可执行文件,这里面的时间消耗的组配和已有编程语言不可比。
举报· 31 次点击
登录 注册 站外分享
快来抢沙发
0 条回复  
返回顶部