空城机 2021-05-19 21:51 采纳率: 66.7%
浏览 41
已采纳

JavaScript 字符串操作性能问题

很好奇,高性能JavaScript书中说 str += "one" + "two" 效率比 str = str + "one" + "two" 低

但是我实际循环多次操作后,发现str += "one" + "two"速度更快,是我使用的测试代码不准确吗?

测试代码:

(function () {
    var str = '';
    console.time('str += "one" + "two"')
    for (var i = 0; i < 10000000; i++) {
        str += 'one' + 'two';
    }
    console.timeEnd('str += "one" + "two"')
})();
(function () {
    var atr = '';
    console.time('atr = atr + "one" + "two"')
    for (var i = 0; i < 10000000; i++) {
        atr = atr + 'one' + 'two';
    }
    console.timeEnd('atr = atr + "one" + "two"')
})()

chrome浏览器:

IE浏览器:

火狐浏览器:

 

 

  • 写回答

2条回答 默认 最新

  • iMingzhen 2021-05-20 10:42
    关注

    很有意思的问题

    可惜MDN查不到相关区别

    都是说 a += b mean a = a + b

     

    经过数次尝试,也加大了循环的次数,在chrome环境下

    字符串:a+=b性能优于 a = a + b

    整型: 性能一致

     

    可能这种测试方式也不够可观,仅这个测试用例下是这个结果

     

    如果有空可以再翻下ecma看看有没有相关内容

    相关文档:

    ECMAScript® 2022 Language Specification 

    https://tc39.es/ecma262/

     

    如有帮助请采纳回答 谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建