Jef*_*eff 36 javascript performance
在javascript,if-else,三元运算符或逻辑OR中哪种方法更快或响应更快?建议使用哪种,原因是什么?
cha*_*rts 126
似乎没有人做任何实际的分析.这是我使用的代码:
test = function() {
for (var i = 0; i < 10000000; i++) {
var a = i < 100 ? 1 : 2;
/*
if(i < 100) {
var a = 1;
}else{
var a = 2;
}
*/
}
}
test();
Run Code Online (Sandbox Code Playgroud)
在OS X Snow Leopard下,使用if
/ else
block而不是三元运算符可以使Google Chrome v21的性能提高1.5到2 倍.
作为一个非常重要的用例,综合实时音频在JavaScript中变得越来越普遍.当算法每秒运行44100次时,这种性能差异是一个大问题.
And*_*ing 25
我不认为@charlie robert的测试是公平的
结果:
正常的平等和正常的三元最慢.
var a = true, b;
if (a === true) {
b = true;
} else {
b = false
}
if (a === false) {
b = true;
} else {
b = false;
}
Run Code Online (Sandbox Code Playgroud)
var a = true, b;
b = (a === true) ? true : false;
b = (a === false) ? true : false;
Run Code Online (Sandbox Code Playgroud)
var a = true, b;
if (a == true) {
b = true;
} else {
b = false;
}
if (a == false) {
b = true;
} else {
b = false;
}
Run Code Online (Sandbox Code Playgroud)
var a = true, b;
b = (a == true) ? true : false;
b = (a == false) ? true : false;
Run Code Online (Sandbox Code Playgroud)
var a = true, b;
if (a) {
b = true;
} else {
b = false;
}
if (!a) {
b = true;
} else {
b = false;
}
Run Code Online (Sandbox Code Playgroud)
var a = true, b;
b = (a) ? true : false;
b = (!a) ? true : false;
Run Code Online (Sandbox Code Playgroud)
And*_*are 18
速度差异可以忽略不计 - 使用您发现的更具可读性.换句话说,我高度怀疑代码中的瓶颈是由于使用了错误的条件构造.
归档时间: |
|
查看次数: |
23365 次 |
最近记录: |