空城机 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 html5 qrcode 扫描器
  • ¥15 爬取网页信息并保存需要完整代码
  • ¥15 一分十不等功分器阻设计问题,请问这个56Ω怎么得到的
  • ¥15 (标签-matlab)
  • ¥100 求看看这个数学建模,有偿
  • ¥15 深度学习目标检测现在框架加注意力的创新可以投几区?
  • ¥15 PdfiumViewer pdf转图片
  • ¥15 利用Java连接API接口总是出问题
  • ¥15 请教一个关于镜头标定,棋盘格格子大小的问题(畸变测试)
  • ¥15 安装GroudingDINO RuntimeError: Error compiling objects for extension