首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标准(简单?)基准代码/测试?

标准(简单?)基准代码/测试?
EN

Stack Overflow用户
提问于 2011-06-12 06:47:42
回答 2查看 4.1K关注 0票数 6

有没有什么标准的基准测试系统或者大纲之类的?我正在研究go,llvm,d和其他语言,我想知道它们在执行时间,内存使用等方面是如何公平的。

我找到了https://benchmarksgame-team.pages.debian.net/benchmarksgame/,但是代码不一样。一个例子是C++源< 100行,而C源>650行。我很难说这是公平的。其源代码中的另一个测试有一个愚蠢的错误,即将锁放在循环内,而其他语言则将其放在外部。

因此,我想知道一些我可能会考虑查看/运行的测试,这些测试可能不使用非标准的库,甚至不使用复杂的库。就像完全在单个源文件中实现一样。一些公平的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-12 07:45:17

基准测试并不完全是关于公平的-它是关于在您的限制范围内为您自己的工作负载选择一些东西。

如果你想使用alioth shootout站点,如果你排除了太冗长或太慢的解决方案,你仍然可以获得有趣的信息(确切的平衡取决于你想要做什么-你是写运行5秒的代码,还是写一个会占用12台计算机5个月的代码)。查看针对一个特定问题的最简明的示例,以了解一般问题的结构-然后查看人们应用了哪些典型的优化来使代码运行得更快。

使用相同代码的基准测试并不重要,因为您需要在不同的语言中提供不同的帮助;Java有GC,这意味着它在trees测试中会做得很好,而您需要在C/C++中自定义内存分配来与之竞争(并且特定的基准测试的结构使得标准malloc的性能非常差),对于spectral-norm基准测试,您需要非盒装的双数组...

如果你想拿出自己的解决方案,可以试试Project Euler --有很多问题不依赖于复杂的库,但优化起来很有挑战性。否则,试着找出你认为足以过滤或排名现有贡献的评分标准(或外部-例如,有一些问题的ShedSkin和Cython解决方案,这些解决方案是“非官方”的,因为这些语言不包括在内)。

票数 5
EN

Stack Overflow用户

发布于 2011-06-17 08:54:43

几年来,benchmarks游戏网站在帮助页面上展示了这一点-

“不公平”是什么意思?(一个寓言)

他们跑上跑下,跑来跑去,来来回回,侧身上下颠倒。

猎豹的朋友说“这不公平”-每个人都知道猎豹是最快的生物,但是比赛太长了,猎豹会很累!

猎鹰的朋友说“这不公平”-每个人都知道猎鹰是最快的生物,但是猎鹰走得不是很好,他在天空中腾空而起!

马的朋友说“这不公平”-每个人都知道马是跑得最快的生物,但这只是一岁的小马,你必须停止比赛,直到有种马参加!

人类的朋友说“这是不公平的”-每个人都知道在“现实世界”人类会使用摩托车,你必须等到人类给引擎加满燃料和热身!

Snail的朋友说“这不公平”--每个人都知道生物应该留下黏糊糊的痕迹,所有其他的生物都在作弊!

斑点狗的尾巴撞在地上。斑点狗喘息着说:“看看那座美丽的山,让我们赛跑到山顶!”

当时,“这不公平”的评论大多是特别的恳求,目的是为了让编程语言X占优势,而让编程语言Y处于劣势。

但你的问题提出的问题有点不同。

查看基准游戏网站上的 。尽管这些程序是用不同的语言编写的,但它们的编码方式几乎没有区别。

到目前为止,还没有人找到一种有效的方法来利用四核来解决这个小的n-body问题-所以没有特殊的多核程序。这些程序不使用非标准或复杂的库。这些程序完全是在一个源文件中实现的,,

  • ,我说过,n-body程序的编码方式几乎没有区别,但这真的意味着这些程序是一样的吗?在项目重新启动后不久,我记得6或7年前,一个Ada程序员半开玩笑地说,将苹果与橙子进行比较,因为Ada程序中的汇编语言与C程序中的汇编语言不同-所以很明显,就像没有被比较过:-)

代码语言:javascript
复制
- _otoh_ the Ada source code would have to be written in a different way than the C source code was written, to make the Ada compiler produce the same assembly language as the C compiler produced.
- _otoh_ if the assembly language produced by both compilers really was line-by-line  the same, why would there be a performance difference? 

当程序的编码方式几乎没有区别时,乍一看,比较似乎是公平的,但强制不同的语言像X语言那样编码可能有利于X语言。

  1. 正如Yannick Versley所指出的,使用不同语言的意义在于语言提供的不同方法。换句话说,有不止一种方法可以做同样的事情。

看看benchmarks游戏网站上的mandelbrot programs -最简单的C程序是最快的C程序的一半大小;最简单的C程序是顺序的,使用双精度,最快的C程序通过OMP和GCC内部函数使用所有4个核心。

代码语言:javascript
复制
- Other languages take _different approaches_ to use all 4 cores - does that mean we should only compare sequential programs and ignore the reality of multi-core computing?
- Other language implementations may not provide an equivalent to GCC intrinsics - does that mean we should only compare programs that use doubles? But other language implementations take _different approaches_ in the way they _represent_ doubles - does that mean we should ignore all floating point programs?

问题是编程语言(和编程语言实现)比苹果和橙子更不同,但我们仍然会问-如果我用X语言编写我的程序会更快吗?-仍然希望得到一个比更简单的答案--这取决于你是如何编写它的!

benchmarks游戏网站上的不同任务和不同程序表明,一些性能比较答案令人困惑和复杂-细节很重要。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6318982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档