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

标签 c++ linux

我在两个不同的计算环境中运行相同的 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版本。

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

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

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

我有两个问题。

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

最佳答案

为什么用户时间大?

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

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

关于c++ - 实时和用户时间之间的巨大差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584205/

相关文章:

c++ - 重复特定的正则表达式模式

c++ - 使用 std::vector<T*> 控制内存

c++ - 在 C++ 中使用头文件时如何以及在何处定义类变量

c++ - 返回对对象的引用不会更改 C++ 中的地址

linux - 用于提取目录中所有 .tgz 的 Bash 脚本

linux - 我如何知道我的服务器是否有 NUMA?

linux mkdir 目录中的目录

c - 什么是 HOPOPT 协议(protocol)以及 socket() 是如何工作的?

c++ - std::string 和 QVariant 之间的转换(反之亦然) Qt5

linux - #!/bin/bash 可执行文件带有参数问题