《JavaScript高级程序设计》——字符串连接性能测试
2016-07-15 13:05
513 查看
在进行字符串连接时,可以采用
加号
数组复制
两种方式进行连接,加号连接会重复执行创建字符串、复制字符串的操作,非常消耗资源,有可能会造成性能问题;采用数组对象存储,然后用join方法创建最后的字符串可以避免这个问题。
上边的代码就是将字符串连接次数设置为10000次,然后根据计算时间差来比较两种方式字符串连接的性能:
对chrome、Firefox、IE浏览器进行了测试,在将i修改为i = 100000时,测试结果如图所示:
加号
数组复制
两种方式进行连接,加号连接会重复执行创建字符串、复制字符串的操作,非常消耗资源,有可能会造成性能问题;采用数组对象存储,然后用join方法创建最后的字符串可以避免这个问题。
预期的结果:使用StringsBuffer类比使用加号节省50%~66%的时间。
/** * 使用StringBuffer类打包连接字符串的功能 */ function StringBuffer() { this._strings_ = new Array; } StringBuffer.prototype.append = function(str) { this._strings_.push(str); } StringBuffer.prototype.toString = function() { return this._strings_.join(""); } var d1 = new Date(); var str = ""; for (var i = 0; i < 10000; i++) { str += "text" } var d2 = new Date(); document.write("Concatenation with plus: "+(d2.getTime()-d1.getTime()) + " milliseconds"); var oBuffer = new StringBuffer(); d1 = new Date(); for (var i = 0; i < 10000; i++) { oBuffer.append("text"); } var sResult = oBuffer.toString(); d2 = new Date(); document.write("<br/>Concatenation with StringBuffer: "+(d2.getTime()-d1.getTime()) + " milliseconds");
上边的代码就是将字符串连接次数设置为10000次,然后根据计算时间差来比较两种方式字符串连接的性能:
对chrome、Firefox、IE浏览器进行了测试,在将i修改为i = 100000时,测试结果如图所示:
根据上图可以看出,测试结果并不如预期,只有chrome浏览器基本上是符合预期的,其他的两个浏览器都是和预期的结果相反;
相关文章推荐
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
- DOM中为事件添加事件处理程序的几种方式以及跨浏览器方式
- Jsp中out.println()与System.out.println()的区别
- JavaScript的几种继承方式
- 添加提前闭合标签 之后添加js可以执行js
- ArcGIS API for javascript(4.0)开发笔记 —— 自定义微件位置
- javascript语句——表达式语句、块语句、空语句和声明语句
- 无bug的ajaxfileupload.js
- ExtJs合并单元格
- 使用jackson来进行数组格式的json字符串转换成List。
- JS 动态加载脚本 执行回调
- Gson json,list,model互转
- JavaScript-HTML DOM
- javascript运算符——条件、逗号、赋值、()和void运算符
- 对HTML5新增JS Api的思考
- 1j2ee即web项目,严格意义上来说,没有jsp代码,只有class文件、html文件、javascript文件。2 基于extjs框架的项目怎么怎么查看在浏览器中展示的最终html页面的代码 3
- JS实现导航栏记住点击后的浏览位置变色功能
- 常用js方法总结
- [javascript权威指南][阅读笔记]四
- js常用的原生方法