为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的程序在分配更多线程的情况下需要更长的时间来执行?

为什么我的程序在分配更多线程的情况下需要更长的时间来执行?

Go
猛跑小猪 2021-11-22 19:36:15
我编写了两个程序,它们使用黎曼和来计算具有一定数量矩形的函数的面积,一个是用 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说明符。


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 267 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信