2010-02-27 55 views
2

大家好,对比效果

这是一个比较普遍的问题,但基本上我想比较的两个多媒体应用软件的性能。虽然他们正在做同样的事情,但他们运行在不同的平台上,对于实现还没有任何了解。我得到了一些不同的表现数据,我试图说明可能是这样的情况。到目前为止,我想出了以下内容:

更好的性能,因为软件的优化:

  • 循环展开,在更高的代码内存占用的成本结果
  • 亲计算存储在内存中的由于底层的硬件体系结构以更高的数据存储器占用

性能更好的成本

  • 在更高的时钟速度
  • 运行的应用程序提供更好的硬件支持
  • 更好的缓存机会

有人能想出别的东西或者是所有的?

感谢, 西蒙

回答

2

我会说:

  • 如果你一无所知的实现,你会不会有兴趣的是如何实施工作,包括展开循环和一切。
  • 在该抽象级别上,您可能需要测量与最终用户相关的性能目标,如in this Wikipedia article
  • 特别是,对于单用户系统响应时间和吞吐量更重要;而对于多用户系统而言,并发性和吞吐量会很重要。前者受时钟速度和UI设计的影响;后者也受高速缓存大小和整个系统在高负载下的行为影响。
  • 马丁·福勒性能指标的良好回顾他PoEA
1

好问题。硬件当然有所作为,但软件结构的差异也是如此。

微观层面的优化如展开会有很大的不同。

推理它并不会让你走得很远 - 你需要调查。

我不是说你可以得到这个问题的明确答案,但这是我会做的。 Somehow, get 10 or 20 random-time stack samples,无论是通过中断和转储,的pstacklsstack,或调试器下运行,并使用Ctrl-C,还是不错的组采样分析器像RotateRight /缩放。

你可以看看这些样本,并得出一个想法,百分比,每个程序如何花费时间。如果它们都接近最佳,那么即使你不确切知道他们在做什么,图片也应该看起来非常相似。如果一个人在内存管理上花费的时间比例更高,那就是一面红旗。如果一个调用堆栈比另一个调用堆栈深得多,那么这也会引起怀疑,这并不是因为调用昂贵,而是因为过于普通的浪费编码风格往往表明这一点。

如果你没有符号,可能需要一定量的侦探工作才能弄清楚,你可能无法做到,但这就是我的方法。