`
blueyanghualong
  • 浏览: 227791 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Javascript性能优化[实例]

阅读更多
最初的代码:
var s = [x1,x2,.....];
var t = [y1,y2,.....].
//s和t的长度对应,大约2700个元素。
function String.prototype.s2c(){
var k='';
for(var i=0;i<this.length;i++)
k+=(s.indexOf(this.charAt(i))==-1)?this.charAt(i):t.charAt(s.indexOf(this.charAt(i)))
return k;
}
//这段代码为:把String中在s数组出现的字符用t中相应位置的字符替换。这种方法可以用在繁简转换上。String的长度不小,一般为一篇 blog文章的长度。

第一次优化:把k变成数组,因为字符串相加没有Array.join的内存效率好。
function String.prototype.s2c(){
var k=[];
for(var i=0;i<this.length;i++)
k.push((s.indexOf(this.charAt(i))==-1)?this.charAt(i):t.charAt(s.indexOf(this.charAt(i))));
return k.join('');
}
效率提高不少。

第二次优化:减少循环内的运算次数。
function String.prototype.s2c(){
var k=[];
for(var i=0;i<this.length;i++) {
    var thisC = this.charAt(i);
    k.push((s.indexOf(thisC)==-1)?thisC:t.charAt(s.indexOf(thisC)));
}
return k.join('');
}
这一次把三次this.charAt(i)调用变成了一次调用,效率也有所提高。

第三次优化:把数组的indexOf改成HashMap查找方式,修改循环里面的this.length
先创建HashMap:
var sMap = {},tMap={};
    for(var i=0;i<s.length;i++) {
        var sChar = s.charAt(i);
        var tChar = t.charAt(i);
        sMap[sChar ] = tChar;
        tMap[tChar] = sChar;
    }
然后修改代码:
function String.prototype.s2c(){
var k=[];
var len = this.length;
for(var i=0;i<len;i++) {
    var thisC = this.charAt(i);
    k[i] = sMap[thisC] || thisC;
}
return k.join('');
}
这一次改进性能也会有比较好的提升。

最后一次优化:改进数组访问的性能。
把原字符串split成数组,然后在一个数组上操作。

function String.prototype.s2c(){
var len = this.length;
var k=this.split('');
for(var i=0;i<len;i++) {
    var thisC = this[i];
    var to = sMap(thisC);
    to?k[i]=to:''; //这里有一个小技巧,这个技巧导致当sMap里没有thisC的映射时下面可以少一次赋值运算
}
return k.join('');
}
经过这一步的优化,性能提升相当明显,我做的测试是,s/t的长度为2700个字符,而每个字符串的长度为1300字符,每100次操作优化前花3.5s 左右,而优化后花700ms左右。整个优化最关键的地方是提升循环内的效率,因为一点效率的损失会被频繁使用的循环放大到成百上千倍。

随着Ajax越来越普遍,Ajax引用的规模越来越大,Javascript代码的性能越来越显得重要。我想这就是一个很典型的例子,上面那段代码因为会被频繁使用,所以才有了此优化的过
分享到:
评论

相关推荐

    JavaScript网页特效实例大全 书籍源码

    4. **图片预加载**:优化网页性能,提前加载图片,防止页面因大图片加载慢而卡顿。 5. **表单验证**:通过JavaScript验证用户输入,确保数据的有效性和安全性。 6. **时间日期处理**:动态显示当前时间,或者实现...

    JavaScript性能优化的小知识总结共23页.pdf.zip

    JavaScript性能优化是提升Web应用响应速度和用户体验的关键领域。这份名为"JavaScript性能优化的小知识总结共23页.pdf"的文档很可能包含了多个方面的重要信息,旨在帮助开发者掌握提高JavaScript代码效率的方法。...

    JAVASCRIPT页面效果实例

    在“JAVASCRIPT页面效果实例”中,我们可以深入探讨如何使用JavaScript来增强用户体验并创建引人入胜的网页效果。下面将详细介绍几个关键的JavaScript页面效果及其实现方法。 1. **页面加载动画** 当用户访问网站...

    JavaScript基础与实例教程

    教程可能涵盖数组方法、正则表达式、错误处理、性能优化、跨域通信以及与jQuery、React等库或框架的结合使用等内容,全面提高JavaScript编程能力。无论是前端开发还是后端开发,JavaScript都是不可或缺的一部分,...

    网页 非常实用JavaScript的各种实例

    7. **性能优化** 实例中可能包含性能测试和优化技巧,如减少DOM操作、合理使用缓存、避免阻塞渲染线程等,帮助你创建高性能的网页应用。 8. **错误处理** 学习如何使用try...catch结构捕获和处理运行时错误,以及...

    JavaScript应用程序经典实例全书源码

    12. **性能优化**:了解如何避免内存泄漏、减少DOM操作、优化循环等,以提升JavaScript程序的运行效率。 通过本书的实例源码,你可以将理论知识转化为实际操作,加深对JavaScript的理解,并掌握如何在实际项目中...

    JavaScript语言精粹(高清电子版)和高性能JavaScript 双语版

    这本书的重点在于优化JavaScript代码的性能,确保应用程序的高效运行。书中可能包含以下知识点: 1. **性能分析**:如何使用开发者工具进行性能测试,识别瓶颈并进行优化。 2. **数据结构和算法**:选择合适的数据...

    300个JavaScript应用实例

    10. **性能优化** 了解如何编写高效的JavaScript代码是提高网站性能的关键。实例可能涉及减少DOM操作、缓存计算结果、避免全局查找等优化技巧。 通过这个300个JavaScript应用实例的压缩包,开发者可以从实践中学习...

    JavaScript编程实例五十讲

    12. 性能优化:理解DOM操作的性能影响,学会使用setTimeout和setInterval的正确方式,以及利用浏览器提供的开发工具进行性能分析和调试。 通过《JavaScript编程实例五十讲》这本书,你可以逐步掌握这些概念,并通过...

    JavaScript连接数据库实例

    JavaScript是一种广泛应用于Web开发的...在实际项目中,还会涉及到事务处理、安全性、性能优化等多个方面,这都需要进一步学习和实践。记住,理解数据库原理和SQL语句对于有效利用JavaScript进行数据库操作至关重要。

    网站开发之旅javascript网页特效实例大全.zip

    11. **性能优化**:如何使用requestAnimationFrame实现平滑动画,以及避免阻塞主线程的技巧,都是提高网页性能的关键。 通过这个压缩包的学习,开发者不仅可以了解JavaScript在网页特效中的实际应用,还能提升解决...

    javaScript 网页开发实例教程

    有效的JavaScript性能优化包括减少HTTP请求、压缩代码、缓存利用、避免阻塞渲染等。理解这些原则有助于提升网页加载速度和用户体验。 十、安全实践 在使用JavaScript开发网页时,安全问题不容忽视。防止XSS(跨站...

    ArcGIS API for JavaScript4.8 实例

    《ArcGIS API for JavaScript 4.8 实例详解》 ArcGIS API for JavaScript 是Esri公司推出的一款强大的地图开发工具,主要用于构建交互式的Web GIS应用。4.8版本是其发展过程中的一个重要里程碑,提供了丰富的功能和...

    突破JavaScript编程实例五十讲

    9. **性能优化**:理解V8引擎的工作原理和JavaScript的内存管理,如垃圾回收,有助于编写高性能的代码。避免全局变量、减少DOM操作、合理使用缓存和优化循环都是提高JavaScript性能的有效手段。 10. **错误处理**:...

    JavaScript实例自学手册

    学习JavaScript性能优化技巧,如避免阻塞主线程、减少DOM操作、缓存计算结果、使用事件委托等,可以提升用户体验。 通过这份“JavaScript实例自学手册”,你可以系统地学习JavaScript的各个方面,并通过实例进行...

    JAVASCRIPT 动态网页编程实例手册

    9. **性能优化**:理解如何有效使用缓存、减少HTTP请求、优化DOM操作等技巧,对提升网页性能至关重要。 10. **跨域通信**:由于同源策略的限制,JavaScript在处理跨域请求时需要采用JSONP、CORS或者WebSocket等方式...

    JavaScript代码优化一例.pdf

    四、JavaScript代码优化实例 下面通过一个工作实例,看看JavaScript代码的优化。这个实例是一个内部信息系统中的权限分配模块,界面如图1所示。该模块的功能是找出选中的功能权限项和对象权限项。最简单的办法是...

    Javascript网页特效实例

    9. **性能优化**:学习如何通过事件委托、防抖和节流等技巧提高JavaScript性能,避免阻塞浏览器线程,是提高网页体验的关键。 10. **ES6+新特性**:包括箭头函数、模板字符串、Promise、async/await等,这些新特性...

Global site tag (gtag.js) - Google Analytics