我编写了两个程序,它们使用黎曼和来计算具有一定数量矩形的函数的面积,一个是用 Go 编写的,另一个是用 C++ 编写的。目标是测量执行时间并查看哪种语言在多线程上更快。我使用 bash script4 在 32 核服务器(双英特尔至强)上运行该程序,以使用 1、2、4、8、16 和 32 个线程运行它。该脚本用于time --format %U获取执行时间。但是正如您在使用 1 个内核运行 Go 版本的结果中所看到的那样,使用 32 个内核运行 Go 版本需要 1.69 秒!我认为使用更多内核会使计算速度更快......我在编写程序时出错了吗?时间的测量准确吗?或者也许结果很好,但如何?预先感谢您的回答!
1 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
根据man time
:
U 进程直接(在用户模式下)使用的 CPU 秒总数,以秒为单位。
您正在测量 CPU 秒,即每个 CPU 累计花费的时间,而不是“挂钟”秒。此度量不会因附加线程而下降,因为它与恒定的工作量成正比。另一方面,这可能会随着线程数量的增加而增加,因为每个新线程都会产生一些额外的簿记。
如果要列出“实时”时间,请使用%e
说明符。
- 1 回答
- 0 关注
- 267 浏览
添加回答
举报
0/150
提交
取消