计算与操作次数相关的时间

时间:2014-12-26 13:40:45

标签: time cpu operations

可以根据它执行的操作次数和以GHz为单位的CPU速度来计算进程的计算时间吗? 例如,我有一个for循环,执行总数为5 * 10 ^ 14个循环。如果它在2.4 GHz处理器上运行,那么计算时间以秒为单位:5 * 10 ^ 14 / 2.4 * 10 ^ 9 = 208333 s? 如果进程并行运行4个核心,那么时间会减少4个吗? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

不,仅根据操作次数计算计算时间是不可能的。首先,基于您的问题,听起来您在谈论一些更高级编程语言中的代码行数,因为您提到了for循环。因此,根据编译器的优化级别,您可以在计算时间内看到不同的结果,具体取决于所执行的优化类型。

但是,即使您正在讨论汇编语言操作,仍然无法仅根据指令数和CPU速度来计算计算时间。某些指令可能需要多个CPU周期。如果您有大量内存访问权限,则可能会有缓存未命中并且必须从磁盘加载数据,这是不可预测的。

此外,如果您关注的时间是程序开始执行的时间与完成时间之间经过的实际时间,您将在计算机上运行其他进程的额外混淆变量并占用CPU时间。在磁盘读取和其他慢速操作期间,操作系统应该非常适合上下文切换,以便程序在计算过程中不会停止,但是你不能指望永远不会因为这个而丢失一些计算时间。

就并行运行四个核心而言,程序本身就不能这样做。您需要将程序实际编写为并行程序。 for循环本身就是一个顺序操作。为了在四个独立的核心上运行四个进程,您需要使用fork系统调用,并有一些方法可以在四个进程之间划分工作。如果将工作分为四个过程,那么最大加速比可以达到4倍,但在大多数情况下,无法达到理论最大值。您的接近程度取决于您能够平衡四个流程之间的工作量以及确保并行流程成功协同工作以产生正确结果所需的开销。