<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title></title>
</head>
<body>
<script>
function f1() {
return 1 + 1;
} function f2() {
return 1000 + 3002 + "sxdd";
} // 方案1
console.time("t1");
for (let i = 0; i < 10000000; i++) {
const name = Math.random() > 0.5 ? "f1" : "f2";
window[name]();
}
console.timeEnd("t1"); // 方案2
console.time("t2");
for (let i = 0; i < 10000000; i++) {
const name = Math.random() > 0.5 ? "f1" : "f2";
switch (name) {
case "f1":
f1();
break;
case "f2":
f1();
break;
}
}
console.timeEnd("t2"); // 方案3
console.time("t3");
const map = {
f1,
f2
};
for (let i = 0; i < 10000000; i++) {
const name = Math.random() > 0.5 ? "f1" : "f2";
map[name]();
}
console.timeEnd("t3");
</script>
</body>
</html>

chrome:

火狐:

性能排序都是 方案2 > 方案3 > 方案1

简洁灵活程度的话,正好与性能相反(鱼与熊掌不可兼得) 方案1 > 方案3 > 方案2

不过不同浏览器内核性能差异较大,应该与浏览器内核优化有关

在chrome中,方案1性能极差,高性能场景慎用

最新文章

  1. 【DP】POJ 2385
  2. Android 写模块化代码注意事项
  3. C# Mysql You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ????
  4. 浅谈java类集框架和数据结构(1)
  5. Java基础类库
  6. 非常棒的 「Sublime Text 配色/主题」与「编程字体」
  7. C++对象模型与内存位对齐的简单分析(GNU GCC&amp;VS2015编译器)
  8. 360手机助手内部资料曝光,63张PPT纯干货
  9. Ubuntu14.04安装Mongodb
  10. test code
  11. C#Execl
  12. .net Ajax使用
  13. 从Unity中的Attribute到AOP(五)
  14. vuex的使用及持久化state的方式
  15. 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)
  16. 学习使用PM2管理nodejs进程
  17. WEB请求处理
  18. AlarmManager的使用和七牛云android SDK上传图片
  19. 【题解】 [HNOI2009] 最小圈 (01分数规划,二分答案,负环)
  20. Python3 OpenCV应用

热门文章

  1. 图文介绍openLDAP在windows上的安装配置
  2. cocos2d-x 2.2.0 图片选中聚焦 ,图片描边 CCClippingNode 实现
  3. Spark map-side-join 关联优化
  4. 有关CGRectGetMinX,CGRectGetMidX,CGRectGetMaxX图解
  5. 怎样取消Macbook上顽固的开机启动项
  6. JavaScript历史状态管理
  7. Android轻量级日志管理框架
  8. WDCP管理面板忘记ROOT MYSQL密码及重置WDCP后台登录密码方法
  9. java学习笔记——java中对象的创建,初始化,引用的解析
  10. spark-submit 提交任务