Performance of if-else, switch or map based conditioning(if-else、switch 或 map based 条件的性能)
问题描述
我想知道以下 javascript 中条件结构的实现的性能.
I was wondering about the performances of the following implementations of conditional structs in javascript.
方法一:
if(id==="camelCase"){
window.location.href = "http://www.thecamelcase.com";
}else if (id==="jsFiddle"){
window.location.href = "http://jsfiddle.net/";
}else if (id==="cricInfo"){
window.location.href = "http://cricinfo.com/";
}else if (id==="apple"){
window.location.href = "http://apple.com/";
}else if (id==="yahoo"){
window.location.href = "http://yahoo.com/";
}
方法二:
switch (id) {
case 'camelCase':
window.location.href = "http://www.thecamelcase.com";
break;
case 'jsFiddle':
window.location.href = "http://www.jsfiddle.net";
break;
case 'cricInfo':
window.location.href = "http://www.cricinfo.com";
break;
case 'apple':
window.location.href = "http://www.apple.com";
break;
case 'yahoo':
window.location.href = "http://www.yahoo.com";
break;
}
方法3
var hrefMap = {
camelCase : "http://www.thecamelcase.com",
jsFiddle: "http://www.jsfiddle.net",
cricInfo: "http://www.cricinfo.com",
apple: "http://www.apple.com",
yahoo: "http://www.yahoo.com"
};
window.location.href = hrefMap[id];
方法四
window.location.href = {
camelCase : "http://www.thecamelcase.com",
jsFiddle: "http://www.jsfiddle.net",
cricInfo: "http://www.cricinfo.com",
apple: "http://www.apple.com",
yahoo: "http://www.yahoo.com"
}[id];
可能方法 3 和 4 可能具有几乎相同的性能,但只是发布以确认.
Probably Method 3 and 4 might have almost the same performance but just posting to confirm.
推荐答案
据此JSBen.ch测试,switch
设置是提供的方法中最快的(Firefox 8.0 和 Chromium 15).
According to this JSBen.ch test, the switch
setup is the fastest out of the provided methods (Firefox 8.0 and Chromium 15).
方法 3 和 4 的速度稍慢,但几乎不明显.显然,if-elseif 方法的速度要慢得多(FireFox 8.0).
Methods 3 and 4 are slightly less fast, but it's hardly noticeable. Clearly, the if-elseif method is significantly slower (FireFox 8.0).
Chromium 15 中的相同测试未显示这些方法之间的性能存在显着差异.事实上,if-elseif 方法似乎是 Chrome 中最快的方法.
The same test in Chromium 15 does not show significant differences in performance between these methods. In fact, the if-elseif method seems to be the fastest method in Chrome.
我已经再次运行了测试用例,另外还有 10 个条目.hrefmap(方法 3 和 4)表现出更好的性能.
I have run the test cases again, with 10 additional entries. The hrefmap (methods 3 and 4) show a better performance.
如果你想在函数中实现 compare 方法,方法 3 肯定会胜出:将映射存储在一个变量中,然后在稍后引用这个变量,而不是重新构建它.
If you want to implement the compare method in a function, method 3 would definitely win: Store the map in a variable, and refer to this variable at a later point, instead of reconstructing it.
这篇关于if-else、switch 或 map based 条件的性能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:if-else、switch 或 map based 条件的性能


- 失败的 Canvas 360 jquery 插件 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 400或500级别的HTTP响应 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Flexslider 箭头未正确显示 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01