条件语句小技巧

“高性能javascript” 这本书中提到了一个“查找表”的概念,建议在有大量离散值要测试时,if-else 和 switch 都比使用查找表慢很多,依据是运行了5万次后的比较结果 例如写一个测试函数,根据传入的参数,返回结果值 switch 的写法

查找表的写法

测试

我好奇这两种写法的性能差距有多少,就测试了一下 代码 var index = 0; console.time('test'); for (var i = 50000; i >= 0; i--)

{ index = index == 10 ? 0 : index ;

search(index++); } console.timeEnd('test'); 分别使用上面两个函数进行测试,执行5万次 switch写法的5次结果分别为: 1.25ms 0.91ms 1.22ms 1.31ms 0.89ms 查找表写法的5次结果分别为: 1.86ms 1.43ms 3.13ms 1.08ms 1.05ms 很明显是switch的写法更快一点,不知道为什么结果和书中不符

总结

个人感觉没啥必要细究哪种语法性能更好,对系统整体性能几乎没有影响 但这个查找表的方式我比较喜欢,给了我一个新的思路

平时写代码时主要用 if-else,习惯了,没想过用别的方法 查找表的方式有两个明显的优点: (1)代码清晰 比switch和if-else简单很多 (2)便于后期维护 当以后想增加或者减少条件时,只需要修改下表中条件值就好了 通过这个小实验,增加了两个经验: (1)不要完全依赖书中说法,多动手测试 (2)对于习惯了的做法也要有点思考,看是否有更合适的做法

本文分享自微信公众号 - 性能与架构(yogoup)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏崔庆才的专栏

使用requests+正则表达式爬取猫眼电影排行

本节中,我们利用requests库和正则表达式来抓取猫眼电影TOP100的相关内容。requests比urllib使用更加方便,而且目前我们还没有系统学习HTM...

79370
来自专栏liuchengxu

代码健康: 减少嵌套, 降低复杂性

原文: Code Health: Reduce Nesting, Reduce Complexity

14020
来自专栏淡定的专栏

《实现模式》读书总结

导语 这是一本关于如何写好代码的书,是一本关于“如何编写别人能看懂的代码”的书。从价值观、原则、模式三个层面解读如何优化代码结构,减少代码维护成本。 关于这本书...

21080
来自专栏日常学python

爬取《The Hitchhiker’s Guide to Python!》python进阶书并制成pdf

这是日常学python的第15篇原创文章 前几篇文章我们学习了requests库和正则,还有个urllib库,我上篇文章也用了requests库来教大家去爬那些...

462170
来自专栏Python攻城狮

爬取拉勾网招聘信息并使用xlwt存入Excel

通过浏览器自带的开发者工具查看是通过Post方式提交的,数据是通过Ajax(异步加载)得到的

10040
来自专栏互联网杂技

通俗讲解:缓存、缓存算法和缓存框架

1 引言 我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案,可是他们不知道缓存是怎么构建的,或者没有告诉你应该采用什么标准去选择缓...

38360
来自专栏编程

Sprint测试交付物设计

交付物定义: 基于敏捷开发流程,每个Sprint周期交付内容应如下: Burndown Chat(燃尽图),例如下图所示: ? Smock Test(冒烟测试)...

23660
来自专栏点滴积累

geotrellis使用(十)缓冲区分析以及多种类型要素栅格化

目录 前言 缓冲区分析 多种类型要素栅格化 总结 参考链接 一、前言        上两篇文章介绍了如何使用Geotrellis进行矢量数据栅格化以及栅格渲染,...

39580
来自专栏aCloudDeveloper

防御性编程

Author:bakari       Date:2012.8.25 本篇是我根据网上的一些陈述经过整理和总结而得。其中详细的内容我会标注出处。看不懂的可以查看...

30580
来自专栏小樱的经验随笔

BugkuCTF 计算器

前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文...

295100

扫码关注云+社区

领取腾讯云代金券