【问题标题】:How to optimize for time?如何优化时间?
【发布时间】:2015-07-05 04:56:00
【问题描述】:

我试图了解在计算机程序中执行以下代码行时是否存在速度差异:

  1. myarray[1] = 5;返回 myarray[1];
  2. myarray[0] = 5;返回 myarray[0];
  3. x = 5;返回 x;
  4. x = 5; y = x;返回 y;
  5. 返回 5;

据我了解,数组基本上是指针(存储其他变量内存地址的变量)。因此 (1) 和 (2) 的速度应该相同,但比 (3)、(4) 和 (5) 慢。

(5)应该是最快的,(3)应该比(5)慢,因为有一个等号,(4)应该比(3)慢,因为有两个等号需要处理.

这样对吗?

【问题讨论】:

  • 至少如果涉及的变量(myarrayx、`y`)对于返回的函数都是本地的,那么一个体面的优化编译器通常能够“看穿”其他任务,它们最终都会基本相同。
  • 这取决于语言......但更重要的是:如果你问这样的问题,你真的不应该担心它。就你的理解水平来说,没关系。使您的代码正确且可读。
  • 要添加到@JerryCoffin,它还取决于您的编译器/解释器对此做了什么。例如,如果 myarray 对当前函数是本地的,它可能会识别 1 和 2 的无效性,并将其优化为 5。你真的不应该担心这个。

标签: performance time time-complexity


【解决方案1】:

您没有给出 myarray、x 和 y 是什么的上下文。没有这种背景,就无法以任何有意义的方式回答这个问题。额外的分配可能没有无法优化的副作用。

基本上,在这个基本级别上查看速度优化是完全没有意义的。如果要查看速度,则需要足够大的代码以测量执行时间。您无法在现代处理器上测量一两个简单语句的时间。

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 2011-12-29
    • 2018-01-10
    • 2016-05-04
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多