我在两个不同的计算环境中运行相同的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
我有两个问题。
答案 0 :(得分:0)
为什么用户时间很长?
如果您有2个核心,两个都在用户模式下运行1分钟,那么您将获得2个用户分钟。
这暗示您的代码在多线程上表现不佳。可能是因为忙于等待锁争用或缓存争用等原因。
答案 1 :(得分:0)
问题解决了。我在我的应用程序中使用共享库。我意识到这个共享库在其默认设置中运行多线程。我将它设置为单线程,然后它开始在两个系统中正常工作。