Programming languages 循环数组的最佳方法 var数据=[]; 对于(i=0,len=data.length;i

Programming languages 循环数组的最佳方法 var数据=[]; 对于(i=0,len=data.length;i,programming-languages,Programming Languages,这两种形成循环的方法与之间的区别是什么?在这两种方法中,哪一种是最好的。 调用第一个变量比调用第二个变量便宜。这是真的吗?在第一种情况下,您将有一个额外的len变量,用于保存数据。length。如果需要在for循环中再次输入数据。length的值,您可以这样做(例如,如果取回它是强制性的昂贵) 但请注意,它与 var data = []; for (i = 0, len = data.length; i < len; i++) { for (i = 0, i < data.len

这两种形成循环的方法与
之间的区别是什么?在这两种方法中,哪一种是最好的。


调用第一个变量比调用第二个变量便宜。这是真的吗?

在第一种情况下,您将有一个额外的
len
变量,用于保存
数据。length
。如果需要在for循环中再次输入
数据。length
的值,您可以这样做(例如,如果取回它是强制性的昂贵)

但请注意,它与

var data = [];

for (i = 0, len = data.length; i < len; i++) {

for (i = 0, i < data.length; i++) {
len=data.length;
对于(i=0;i

在第一种情况下,您将有一个额外的
len
变量来保存
data.length
。如果您需要在for循环中再次输入
data.length
的值,您可以这样做(例如,如果检索它的成本很高)

但请注意,它与

var data = [];

for (i = 0, len = data.length; i < len; i++) {

for (i = 0, i < data.length; i++) {
len=data.length;
对于(i=0;i

我更喜欢可读性。

这在很大程度上取决于语言。大多数编译器将长度视为循环不变量,并将其移到自身之外。这种细节不太重要,循环中真正重要的事情是具有缓存友好的循环,即以缓存空间和时间局部的方式向下移动数据y是最大的。

这在很大程度上取决于语言。大多数编译器会将长度视为循环不变量,并将其移到自身之外。这种细节并不重要,循环中真正重要的事情是拥有对缓存友好的循环,即以缓存空间和时间位置最大的方式来记录数据。

y是的,根据:


注意:如果您不确信,您可以轻松构建测试。

是的,它是-根据:


注意:如果你不确信,你可以很容易地构建一个测试。

调用第一个比第二个便宜。这是真的吗?正如我说的,这取决于你是否需要
数据。再次在for循环中使用length
。如果不是,第二个要快一点。调用第一个比第二个便宜。这是真的吗?正如我说的,这取决于你是否需要eed
data.length
再次出现在for循环中。如果没有,第二个循环会快一点。请注意,这只适用于JavaScript,在大多数其他语言中,我怀疑它是否同样重要。此外,这个基准是在2008年用Firefox 3.0.1制作的-现代编译器有更好的、高度优化的JavaScript引擎。我同意。而且,我自己更喜欢选择imize的可读性(=更少的bug)要比性能好,除非有充分的理由进行性能优化(在这种情况下应该有可忽略的差异)。所以基本上我总是选择第二种方式。注意,这只适用于JavaScript,在大多数其他语言中,我怀疑它是否同样重要。此外,这个基准是在2008年用Firefox 3.0.1制作的-现代编译器有更好的、高度优化的JavaScript引擎。我同意。此外,我自己更喜欢为可读性进行优化(=更少的bug)而不是性能,除非有充分的理由进行性能优化(在这种情况下应该有可忽略的差异)。所以基本上我总是选择第二种方法。