不同Visual Studio平台上的运行时间不同?

时间:2014-10-23 06:32:21

标签: c++ performance visual-studio portability timing

我在不同的VS平台下运行相同的项目,时间如下:

  • VS2010 - x64: 114 ms
  • VS2010 - x32: 1,078 ms
  • VS2013 - x64: 112 ms
  • VS2013 - x32: 84 ms

所以我有以下问题:

  1. 这是正常的,在不同的VS平台下,时间变化很大吗?
  2. 我应该指望几点?
  3. 其他信息:

    • 所有都在发布模式下运行而不进行调试(Ctrl + F5)。
    • 所有时间都已经计算了很多次。
    • 所有测试均在同一台PC上进行。

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题。我们在很短的代码中完成了很多这类测试。不可否认,在UNIX下,但原则和问题是相同的。

32位VS2010的结果令人惊讶,但我正在猜测为什么。而是在代码上运行探查器。这将告诉你所有的时间都在哪里。然后你可以比较那个热点不同版本的汇编语言输出,答案将不可避免地出现。

回答你的两个具体问题:

时间保证 除非您可以控制硬件规范和目标系统上运行的其他软件,否则无法保证时间。

编译器的时序变化 时间可能因平台,编译器和编译器版本而异。但是,通过使用分析器,您可以确定您拥有的时间关键代码与任何特定构建的代码一样好。

参考资料

  1. Windows下的分析: http://msdn.microsoft.com/en-us/library/ms182372.aspx
  2. 有关优化C ++和asm的文档:http://www.agner.org/optimize/
  3. 跳过前20分钟: https://www.youtube.com/watch?v=rX0ItVEVjHc Mike Acton展示了 不同编译器之间汇编语言输出的差异 并讨论优化技术。