Javascript拼接字符串的效率比较:String.replace VS Array.push

复制代码

/*
* * 背景是因为发现同事拼JS字符串喜欢用模板(String.replace),没错,用模板增加了可读性,
* 但是相较于高效的Array.push然后Array.join("")拼接字符串而言,用replace有个性能问题。
* 以循环1000次举例,ie下差距很大,ff下的Array.push也要快将近一倍。可运行下面的demo:
* String.replace VS Array.push
*/ var testType=2;//1=String.replace or 2=Array.push var s="",sArr=[],n=1000;//u can change "n" from 1000 to 10000 for(var i=0;i<n;i++){ s+="{a}";} var t1=new Date().getTime(); for(var i=0;i<n;i++){ if(testType==1) s=s.replace("{a}","ba"); else sArr.push("b"+"a"); } if(testType!=1)s=sArr.join(""); var t2=new Date().getTime(); alert("use "+(testType==1?"String.replace":"Array.push")+":"+(t2-t1)+" ms")
复制代码

还有个结论是,超过100ms(貌似是这个数字?)的延迟可以被感知,如果模板方案的处理速度慢下来了(因为需要先读取模板),延迟是可以感知的,在某些项目中是不允许的。

posted @   Kai.Ma  阅读(3353)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示