The*_*let 2 javascript optimization loops if-statement
我有两种替代方法来执行一段代码.代码基本上重置了三个数组中的所有值.其中两个是int数组,一个是boolean.
选择1
for (i = 0; i < array1.length; i++)
array1[i] = 0;
for (i = 0; i < array2.length; i++)
array2[i] = 0;
for (i = 0; i < array3.length; i++)
array3[i] = false;
Run Code Online (Sandbox Code Playgroud)
选择2
int limit = <assign the greatest of the array lengths>
for (i = 0; i < limit; i++)
{
if (i < array1.length)
array1[i] = 0;
if (i < array2.length)
array2[i] = 0;
if (i < array3.length)
array3[i] = false;
}
Run Code Online (Sandbox Code Playgroud)
哪一个会更快?鉴于阵列可以具有不同的长度并且彼此没有关系.
有一个真正的好讨论在这里.首先列出的答案很清楚地解释了数组在javascript中实际意味着什么.对于有兴趣的人来看看吧!
这个版本几乎肯定会更快.它也更容易阅读和更短,这两个都是比速度更重要的属性(99 +%的时间).
for (i = 0; i < array1.length; i++)
array1[i] = 0;
for (i = 0; i < array2.length; i++)
array2[i] = 0;
for (i = 0; i < array3.length; i++)
array3[i] = false;
Run Code Online (Sandbox Code Playgroud)
通常,访问内存中最近访问的数据的速度更快.
此版本也不会受到您在第二个版本中获得的额外分支的影响.
一个足够先进的编译器会将第二个版本转换为第一个版本.
基准测试:微基准测试100%无用,无需首先分析整个程序.由于我不认为性能测量是有用的,我不提供它们.
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |