JavaScript的性能问题
(摘自《Ajax+Lucence构建搜索引擎》)
javascript是一种解释型语言,性能无法达到和C、C++等编译语言的水平,但还是有一些方法来改进。
1、循环
JavaScript中的循环方式有for(;;)、while()、for(in)3种。其中for(in)的效率极差,因为for(in)执行过程中需要查询散列键。for(;;)和while()比较,while循环的效率要优于for(;;)。
2、局部变量和全局变量
局部变量的访问速度更快,因为全局变量其实是全局对象的成员,而局部变量是放在函数的堆栈当中的。
3、不使用eval
使用eval函数相当于在运行时再次调用解释引擎对内容进行解释运行
4、减少对象查找
因为JavaScript的特性,对于类是表达式a.b.c.d.e,需要至少4次查询操作。首先检查a在检查a中的b,如此往下。应尽量避免出现这样的表达式、可以利用局部变量把要访问的最终结果放入一个临时的位置进行查询。
这一点可以和循环结合起来,例如对一个数组可以先取他的长度 var len = a.length
##其实java 中对于列表的循环也是先取size给一个临时变量
5、字符串连接
如果是追加字符串,最好使用s+=anotherStr操作,而不要使用s=s+""
但是如果要连接多个字符串,应该少用+= 例如:
java 代码
应该写成 s+=a+b+c;
如果是收集字符串,比如收集字符串,最好使用一个缓存实现。具体的实现思路就是使用Javascript数组来收集每个字符串,最好使用join方法将这些字符串连接起来,如下面代码所示:
- var buf = new Array();
- for(var i=0;i<100;i++){
- buf.push(i.toString());
- }
- var all = buf.join("");
6、类型转换
类型转换是JavaScript编程中容易出错的地方,因为JavaScript是动态类型语言,即弱类型语言,不能指定变量的具体类型。
(1)把数字转换成字符串,应用""+1,虽然比较别扭一点、但效率是最高的
(""+)>String()>.toString()>new String()
String()属于内部函数,所以速度很快,toString()要查询原型中的函数,new String()用于返回一个精确的副本。
(2)浮点数转换成整型 parseInt()用于将字符串转换成数字,应该使用Math.floor()或者Math.round()来实现浮点型和整型之间的转换。
(3) 对于自定义的对象,如果定义了toString()方法进行类型转换的话,推荐显示调用toString()
7、使用直接量
以往我们都使用new Array(parm,parm1..)等形式,对于直接量的解释JavaScript支持使用[param,param1....]来直接表达一个数组。
前一种方式调用Array内部构造器,而后一种方式是解释引擎直接解释的,故执行速度要略微快一点。同理var foo = {}比 var foo = new Object()快,var reg=/..../比 var reg=new RegExp()执行的快些。
8、字符串遍历
优先使用正则表达式
9、高级对象
自定义高级对象和Date、RegExp等对象构造时会消耗大量的时间和资源
10、插入HTML
document.write效率较低,innerHTML效率较高
11、下标查询
使用直接的下标查找一个对象的属性比通过.name方法要快很多
12、创建DOM节点
通常我们可能会使用字符串直接写HTML语句来创建节点,实际上这样有如下缺点:
无法保证代码的有效性;
字符串操作效率低。
应该使用documeng.createElement()方法。如果存在现成的样板节点,应该使用cloneNode()方法。
分享到:
相关推荐
为此,李晓丽和杜振龙在《基于Lucence的个性化搜索引擎研究》一文中提出了一种新的个性化搜索引擎方案。该方案通过分析用户的Cookie文件来构建用户兴趣模型,并以此指导搜索引擎提供更加精准的搜索结果。 #### 关键...
基于开源搜索引擎工具(如Heritrix +Lucence,或Nutch+Solr),搭建独立完整的搜索引擎测试平台。 2)垂直搜索行业信息:自主选择某一感兴趣行业,抓取相关行业内容。以抓取结果作为数据库,建立垂直搜索引擎,实现...
《lucene+nutch开发自己的搜索引擎一书源代码》是一份专为初学者设计的资源,旨在教授如何利用Apache Lucene和Nutch构建自定义搜索引擎。Lucene是Java编写的一个高性能全文检索库,而Nutch则是一个开源的网络爬虫...
Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了丰富的搜索功能,包括布尔运算、短语搜索、近似搜索、模糊搜索、排序等。作为一...
Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,广泛应用于各种Java应用中。而PHP作为Web开发中的重要语言,通过特定的方式可以与Java进行交互,从而利用Lucene的强大功能。 首先,要理解PHP连接Java...
**AJAX Lucene** 是一个基于JavaScript的搜索库,它结合了AJAX(Asynchronous JavaScript and XML)技术与Apache Lucene的搜索引擎功能,为Web应用提供了实时、高效的全文检索能力。Lucene是Java开发的开源全文检索...
Lucene是一个开源的全文搜索引擎库,被广泛应用于构建复杂的搜索引擎系统。它的设计目标是高效、灵活且可扩展。理解Lucene的工作原理有助于开发人员更好地利用这一强大的工具。 **一、全文搜索引擎** 全文搜索引擎...
对于IT博客,搜索引擎可能需要处理的技术问题包括: - **代码片段处理**:由于IT博客中可能包含大量的代码,需要特殊处理以避免干扰搜索结果。 - **专业术语识别**:识别并处理IT领域的专业词汇,提高搜索精度。 ...
本篇文章将深入探讨“lucence+xml”这一主题,揭示如何利用搜索引擎技术Lucene和XML进行数据管理,以及在公交系统中的具体实现。 首先,让我们了解Lucene。Lucene是Apache软件基金会的一个开源项目,它是一个高性能...
HiGo垂直搜索引擎开源版系统需要独立服务器支持,也可以用你本地电脑做服务器来调试,基于lucence mysql asp.net,支持数据索引,中文分词,模糊查询,爬虫采集,精确采集规则模式和模糊采集规则模式相混合(模糊采集...
在《Lucence in Action》这本书中,读者可以深入理解Lucene的工作原理,学习如何构建和优化索引,掌握查询语法,以及如何在实际项目中部署和维护Lucene搜索引擎。 Hadoop,另一方面,是Apache软件基金会下的一个...
最近由于在做的电子商务网站,前台要频繁的进行搜索商品,列出符合条件的商品,由于商品数量之大,考虑到要用lucene来显示搜索功能,本文将通过一个简单的例子来告诉你lucene的实现和使用Paoding进行中文分词,当然...
Lucene是Apache软件基金会的一个开源全文检索库,它提供了高性能、可扩展的搜索和分析能力。在本篇文章中,我们将深入探讨Lucene的基本概念,以及如何通过一个简单的Lucene搜索技术Demo,了解其关键字搜索和网页爬虫...
总之,Lucence 4.6.0版本的JAR包集合是一个强大的工具集,它为开发高性能、可扩展的全文搜索引擎提供了坚实的基础。理解并掌握这些库的功能和用法,可以帮助开发者构建出满足各种需求的搜索解决方案。
Lucence的描述以及重要的几个方法详解说明,Lucence的应用以及实例
HiGo垂直搜索引擎开源版系统需要独立服务器支持,也可以用你本地电脑做服务器来调试,基于lucence mysql asp.net, 支持数据索引,中文分词,模糊查询,爬虫采集,精确采集规则模式和模糊采集规则模式相混合(模糊...
这对于构建搜索引擎来说至关重要,因为搜索引擎需要能够处理各种不同类型的文档,而Tika正好提供了这个能力。 将Lucene与Tika结合使用,可以实现对各种文件类型的全文检索。首先,通过Tika解析输入的文件,将非文本...
Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个高级的、可扩展的、完全免费的搜索程序开发框架,使开发者能够轻松地在自己的应用程序中添加全文检索...
开源文档管理系统,直接解压安装。解压文件中自带jdk,tomcat。部署简单。 可通过文件名称搜索文档。基于J2EE+Ajax web+jsp+lucence等技术开发