1

我在两个不同的计算环境中运行相同的 C++ 实现,第一个是 Xeon 2.3 GHz 和 48 Gb 内存,第二个是 Core2 Duo 2.53 GHz 和 3 Gb 内存。对于编译,我使用了带有类似选项的 g++。我应该注意第一个系统是 64 位 Red Hat,第二个是 32 位 Ubuntu。另外,g++版本不同,第一个系统安装的是4.1.2版本,第二个系统安装的是4.6.1版本。

当我运行代码时,两个系统都返回完全相同的解决方案。对于每个系统,时间结果如下。

System-1:
真正的 0m19.623s
用户 2m13.588s
sys 0m3.118s

System-2:
真正的 0m11.229s
用户 0m11.785s
sys 0m1.496s

我有 2 个问题。

  1. 为什么 System-1(更好的计算环境)运行的代码比 System-2 差?
  2. 对于 System-1,实际时间和用户时间之间的差异是相当大的。为什么会出现这种情况?
4

2 回答 2

0

为什么用户时间很大?

如果您有 2 个核心,每个核心都在用户模式下运行 1 分钟,那么您将获得 2 个用户分钟。

这暗示您的代码在多线程上表现不佳。诸如忙于等待锁定争用或缓存争用之类的原因可能是原因。

于 2012-05-14T13:30:50.963 回答
0

问题已经解决了。我在我的应用程序中使用共享库。我意识到这个共享库在其默认设置中是多线程的。我将它设置为单线程,然后它开始在两个系统中正常工作。

于 2012-05-27T22:58:00.173 回答