Ben Dicken (@BenjDicken[1]) 做了一项测试[2],执行双层循环, 1 万 * 10 万= 10 亿次循环,看看哪种编程语言快。为此还制作了一个动图来直观展示。
一般来说,这种项目,最精彩的是issue。
热心的开发者贡献了各种语言的版本,比如Zig
、Julia
、Perl
、Elixir
、Fortan
、C#
、Lua
等
同时,还在讨论应该怎样优化代码
比如 @dolanor[3] 提了一个PR # optimize go loops with goroutine[4] 认为Golang的长处是在并发编程,单线程下它的效率肯定比不上C
、Rust
,应该用goroutine来优化。
@Brandon-T[5] 在 # Benchmark Issues[6] 讨论了现有基准测试存在的问题及改进方向,核心观点为测试不应包含程序启动、打印等无关时间,应聚焦代码执行本身。
不知不觉我几乎把整个issue全部看完了。
这个项目让我想到了年初的1BRC[7]。在枯燥的编码生活中,这是一个很好的消遣。同时能够学习一些性能优化的技巧,参与到与世界各地的人的讨论中来。 我希望这样的活动能够多一点。
[1]@BenjDicken: https:://x.com/@BenjDicken
[2]测试: https://github.com/bddicken/languages
[3]dolanor: https://github.com/dolanor
[4]# optimize go loops with goroutine: https://github.com/bddicken/languages/pull/86
[5]Brandon-T: https://github.com/Brandon-T
[6]# Benchmark Issues: https://github.com/bddicken/languages/issues/71
[7]1BRC: https://www.morling.dev/blog/one-billion-row-challenge/