Go 语言基准测试?

Posted

技术标签:

【中文标题】Go 语言基准测试?【英文标题】:Go language benchmarks? 【发布时间】:2010-12-16 00:44:36 【问题描述】:

我看到 Go 在速度上应该几乎可以与 C 相媲美的说法,但是是否有任何可用的基准?

【问题讨论】:

【参考方案1】:

Go 被添加到Computer Language Benchmarks Game。与 C++ 相比,它还有一段路要走。

2009 年 11 月:

2011 年 10 月:

【讨论】:

你是个程序员!你不认为我们如何编写程序很重要吗? reddit.com/r/programming/comments/a3yaq/… 你说得对,最后一句应该是“比较起来……走吧,基准测试还有一段路要走”。所以我很期待学习如何加速基准测试和一般的 Go 程序。 哇,在短短一年内,性能有了相当大的提升!【参考方案2】:

发行版中有一个基准文件夹。查看$GOROOT/test/bench

【讨论】:

基准测试主要来自 debians 计算机语言基准测试游戏。我已经开始移植缺失的部分:github.com/hoffmann/go-shootout 欢迎任何帮助。 你是什么意思“失踪”? debian 计算机语言基准测试游戏有 50 多个示例 alioth.debian.org/scm/viewvc.php/shootout/bench/?root=shootout 只有其中一些在 $GROOT/test/bench 中实现 @Peter Hoffman - 不,它没有。它有这里显示的 13 个示例 - shootout.alioth.debian.org/u32q/index.php - 它已经从上个世纪的历史中删除了过时的代码。【参考方案3】:

文档很轻,充满了“也许有一天我们会 X”和“关注这个空间以获取更多信息”。 Go 页面将语言参考列为最佳的单一信息来源,对我来说这是婴儿语言。我怀疑是否有任何已发布的基准。

【讨论】:

【参考方案4】:

我编写了一个 GenPrime 的 Go 端口(可在我的项目分支 here 中获得)。我发布了我收到的结果(与 C 版本相比)on this topic at Ferrous Moon。尽管我的 Go 移植使用浮点数学与整数数学,但结果令人印象深刻。

【讨论】:

【参考方案5】:

Profiling Go Programs 讨论了 Robert Hundt 的 C++/Scala/Go 基准测试,还清楚地解释了如何调整 Go 应用程序的性能。这是一个单一的程序基准测试,但值得一读以了解工具对性能调整的支持水平,结果表明它在 Hundt 选择的这个特定问题上与 C++ 具有竞争力。

【讨论】:

【参考方案6】:

请记住,GC 是一个简单的标记清除实现。我不明白的是,为什么 Go 不使用 LLVM 编译器工具链?

【讨论】:

我不知道这有多有效,但FAQ 说:“我们也考虑过将 LLVM 用于 6g,但我们觉得它太大而且速度太慢,无法满足我们的性能目标。” @Alexei 据我所知,“太慢”的目标是编译速度,这是 Go 的主要目标之一。

以上是关于Go 语言基准测试?的主要内容,如果未能解决你的问题,请参考以下文章

Go 语言基准测试?

go语言单元测试和基准测试

go语言学习笔记 — 基础 — go工具(5.2): 基准测试 (性能测试)—— 获得代码内存占用和运行效率的性能数据

Go语言基准测试(benchmark)三部曲之一:基础篇

Go语言基准测试(benchmark)三部曲之二:内存篇

Go语言的基准测试简单示例