空城机 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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵