实时和用户时间之间的巨大差异

时间:2012-05-14 13:24:10

标签: c++ linux

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

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

系统-1:
真实0m19.623s
用户2m13.588s
sys 0m3.118s

系统-2:
真实的0m11.229s
用户0m11.785s
sys 0m1.496s

我有两个问题。

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

2 个答案:

答案 0 :(得分:0)

为什么用户时间很长?

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

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

答案 1 :(得分:0)

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