【问题标题】:Does the frequency of machine effect execution time of my code?机器的频率会影响我的代码的执行时间吗?
【发布时间】:2011-11-10 10:01:10
【问题描述】:

我编写了执行特定任务的代码;现在我什么时候在不同的机器上运行(具有不同的频率)需要不同的时间吗?

质疑

如果我的代码有一个printf 函数,那么所有机器所需的机器周期数是固定的,还是取决于系统?

我的系统频率是2.0GHz,是什么意思?

【问题讨论】:

  • 周期数将根据编译器生成的机器指令和 CPU 的体系结构而有所不同。在其他条件相同的情况下,速度将与时钟频率成正比。
  • @Tom 您的意思是,对于一个系统,printf () 是否有可能在 10 个机器周期内执行,而对于其他系统,它可能需要 15 个机器周期..?
  • 嗯,对于像 printf 这样涉及 I/O 的相当复杂的函数来说,这两个数字都非常小。但是,是的,可能会有很大的不同。这一切都取决于编译器如何翻译它以及机器的指令集。
  • @Tom 谢谢...有没有办法知道我的系统的任何功能/语句的机器周期,..?
  • 编译到汇编,找出每条指令在你的机器上占用多少周期,然后模拟一个调用,我猜。分析器可能会告诉你。

标签: c performance architecture


【解决方案1】:

代码的执行时间取决于 CPU 的频率以及许多其他因素。在所有其他条件相同的情况下,更快的 CPU 将花费更少的时间来执行相同的指令。但是影响时序的其他因素很多,包括操作系统、编译器、内存芯片、磁盘等等。

如果机器具有相同的基本架构,则机器周期数是固定的。然而,现代 CPU 架构非常复杂,很容易根据机器上同时运行的其他内容而有所不同。如果机器具有不同的芯片类型(即使在诸如 Intel Core 2 Duo 之类的系列中),那么结果可能会有所不同。如果机器具有不同的架构(例如 Intel 与 SPARC 或 PowerPC),那么所有的赌注都没有了。

如果“频率为 2.0 GHz”,则表示主 CPU 时钟周期为 2.0 GHz。在那段时间内执行了多少条指令,取决于指令、并行度(多少个内核)和 CPU 类型等。CPU 频率与控制内存读取速度的总线频率是分开的(所以,我'正在使用 2.0 GHz CPU,但内存总线以 1067 MHz 运行)。

【讨论】:

  • “如果机器具有相同的基本架构,则机器周期数是固定的” - 取决于您所说的相同基本架构的意思。即使忽略内存性能等方面的差异,与同一芯片的 1.0 版本相比,芯片的 1.1 版本可能对某些指令具有不同的循环计数,即使在大多数情况下您会称它们为“相同的架构” ”。但是完全相同的芯片以不同的速度运行,周期数将是相同的。
【解决方案2】:

计算机的时钟速度当然会影响程序的执行时间,但仅仅说处理器运行在 2 GHz 绝对不足以确定程序将运行多长时间,因为有 处理器系列之间的“效率”存在巨大差异 - 当英特尔酷睿系列处理器以相同速度运行时,其每单位时间的工作量将比其前身 Pentium 4 多得多。

所以是的,CPU 速度对程序的执行时间有很大的影响,但仅仅 GHz 值是绝对不够的。这就是设置各种基准测试的原因,以便能够比较处理器在一个时间单位内可以完成的工作。这些基准测试将运行混合指令,这些指令可以被认为是所选场景中的典型工作负载,并确定它们的执行需要多长时间。查看 WhetstoneDhrystone 了解一些较旧但相对容易理解的基准。

有大量基准的事实仅证明,要获得每个人都同意的可比值并不容易,这仍然是一个有争议的话题......

【讨论】:

    【解决方案3】:

    CPU的频率决定了它在一定时间内可以做多少工作。所有机器上的代码都是相同的(即它是编译代码),所以是的,频率会影响运行程序所需的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2013-02-17
      • 2020-03-25
      • 1970-01-01
      • 2016-10-30
      • 2021-09-17
      相关资源
      最近更新 更多