【发布时间】:2015-07-05 04:56:00
【问题描述】:
我试图了解在计算机程序中执行以下代码行时是否存在速度差异:
- myarray[1] = 5;返回 myarray[1];
- myarray[0] = 5;返回 myarray[0];
- x = 5;返回 x;
- x = 5; y = x;返回 y;
- 返回 5;
据我了解,数组基本上是指针(存储其他变量内存地址的变量)。因此 (1) 和 (2) 的速度应该相同,但比 (3)、(4) 和 (5) 慢。
(5)应该是最快的,(3)应该比(5)慢,因为有一个等号,(4)应该比(3)慢,因为有两个等号需要处理.
这样对吗?
【问题讨论】:
-
至少如果涉及的变量(
myarray、x、`y`)对于返回的函数都是本地的,那么一个体面的优化编译器通常能够“看穿”其他任务,它们最终都会基本相同。 -
这取决于语言......但更重要的是:如果你问这样的问题,你真的不应该担心它。就你的理解水平来说,没关系。使您的代码正确且可读。
-
要添加到@JerryCoffin,它还取决于您的编译器/解释器对此做了什么。例如,如果 myarray 对当前函数是本地的,它可能会识别 1 和 2 的无效性,并将其优化为 5。你真的不应该担心这个。
标签: performance time time-complexity