邀请各路编程语言做 benchmark,进行性能比较

1次阅读

共计 744 个字符,预计需要花费 2 分钟才能阅读完成。

介绍

这个库 使用 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 之类的语言,因为它们一般性的需要编译一个可执行文件,这里面的时间消耗的组配和已有编程语言不可比。
正文完
 0