作家
登录

测试JavaScript函数的性能

作者: 来源: 2017-08-10 16:52:45 阅读 我要评论

  •  
  • measureFunction(isIn2); 
  • 我们运行膳绫擎的代码, 可以得出如下的输出:

    1. true 
    2.  
    3. false 
    4.  
    5. true 
    6.  
    7. false 
    8.  
    9. isIn1 took 0.0050 
    10.  
    11. isIn2 took 0.0150 

    这个示例的在线演示如下所示:

    或许你已经完美的意识到console.log方法是弗成以猜测的。然则履行多个函数同样是缺点的,即使每个函数都不会触发I/O操作。例如:

    到底产生了什么?第一个函数的速度要快3倍!那不是我们假设的情况。

    其实假设很简单,然则有些奥妙。第一个函数应用了haystack.forEach办法,浏览器的JavaScript引擎会为它供给一些底层的优化,然则当我们应用数据索引技巧时,JavaScript引擎没有供给对应的优化。这告诉我们:在真正测试之前,你永远不会知道。

    结论

    在我们试图解释若何应用performance.now()办法获得JavaScript精确履行时光的过程中,我们有时发清楚明了一个基准场景,它的运行结不雅和我们的直觉相反。问题在于,如不雅你想要编写更快的web应用,我们须要优化JavaScript代码。因为计算机(几乎)是一个活生生的器械,它很难猜测,有时会带来“惊喜”,所以如不雅懂得我们代码是否运行更快,最靠得住的方法就是编写测试代码并进行比较。

    当我们有多种方法来做一件工作时,我们不知道哪种方法运行更快的另一个原因是要推敲高低文。在上一节中,我们履行一个大年夜小写不敏感的字符串萌芽来寻找1个字符串是否在其它26个字符串中。当我们换一个角度来比较1个字符串是否在其他100,000个字符串中时,结论可能是完全不合的。

    膳绫擎的列表不是很完全的,因为还有更多的缺点须要我们去发明。例如,测试不实际的场景或者只在JavaScript引擎上测试。然则肯定的是对于JavaScript开辟者来说,如不雅你想编写更好更快的Web应用,performance.now()是一个很棒的办法。最后但并非最不重要,请谨记衡量履行时光只是“更好的代码”的一不和。我们还要推敲内存消费以及代码复杂度。

    一种方法是去计算后面9次的平均时光。别的一种加倍应用的方法是收集所有的结不雅,然后计算“中位数”。根本上,它会将所有的结不雅分列起来,对结不雅进行排序,然后取中心的一个值。这是performance.now()函数如斯有效的处所,因为无论你做什么,你都可以获得一个数值。

    怎么样?你是否曾经应用这个函数来测试你的代码机能?如不雅没有,那你是怎么来测试机能的?请鄙人面的评论平分享你的设法主意,让我们开端评论辩论吧!

    【编辑推荐】

    1. 大年夜指向看JavaScript中的可贵
    2. 在Node.js中应用MySQL&MySQL JavaScript客户端
    3. 现代前端开起身术栈
    4. 前端实现文件的断点续传
    5. JavaScript进阶之深刻懂得数据双向绑定
    【义务编辑:枯木 TEL:(010)68476606】

    “单调性”的数学定义是“(一个函数或者数值)以大年夜不削减或者大年夜不增长的方法改变”。



      推荐阅读

      17个案例带你3分钟搞定Linux正则表达式

    正则表达式是一种字符模式,用于在查找过程中匹配制订的字符。元字符平日在Linux平分为两类: Shell元字符,由Linux Shell进行解析; 正则表达式元字符,由vi/grep/sed/awk等文本处理>>>详细阅读


    本文标题:测试JavaScript函数的性能

    地址:http://www.17bianji.com/lsqh/36647.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)