在
JSI的实现中,有这样一种需求,将有自带命名空间的脚本元素名数组转换成没有命名空间的变量名数组.
比如 :
['YAHOO.util.XXXX,YAHOO.util.YYYY,YAHOO.event.XX'] ->['YAHOO']
以前一直是较长的一段处理代码,今天突发奇想,这个用正则表达式处理效果如何?
于是,就这种处理,分别测试了正则表达式和javascript代码的效率.
测试数据如下(regTime /codeTime):
620/4536
729/4068
719/4250
645/4152
655/4642
FF和IE结果差不多,上面是FF2的数据
总结:
经常看见很多地方对正则表达式的效率的怀疑,但是这个问题放在javascript里面,好像情况又不同了. 适当使用正则式,反而可以大大提高效率.
在javascript这类\较慢的解释型语言里面,少即快,能用原生代码就不要自己写.
测试代码:
- var data = [];
- for(var i = 0;i<20;i++){
- data[i] = "NS"+i/10+'.'+i
- }
- document.write(
-
- data +"<hr>")
- var i = 0;
- var regTime = 0;
- var codeTime = 0;
- var inc = 0;
- var reg = /(\b[\$\w]+)[\$\w\.]*(,\1\b[\$\w\.]*)*/g;
-
- var regResult,codeResult;
- while(inc++<100){
- var i=0;
- var t1 = new Date();
- while(i++<100){
- regResult = data.join(',').replace(reg,'$1').split(',');
- }
-
- var t2 = new Date();
- while(i++<200){
- codeResult = [];
- var flagMap = {};
- for(var j=data.length-1;j>=0;j--){
- key = data[j];
- key = key.substr(0,key.indexOf('.'));
- if(!flagMap[key]){
- codeResult[codeResult.length] = (key);
-
- flagMap[key] = true;
- }
- }
- }
- var t3 = new Date();
- regTime +=(t2-t1);
- codeTime+=(t3-t2);
- }
- document.write(
- "regResult:"+
- regResult)
- document.write(
- "<hr>codeResult:"+
- codeResult)
- prompt("regTime /codeTime",regTime +'/'+codeTime)
注:
这段正则代码是不严谨的,当数组中有多个命名空间,且顺序打乱时,不能剔除全部重复变量.不过JSI中对这个结果尚可接受.
分享到:
相关推荐
- Regex101:支持多种语言的正则表达式测试平台,有详细的解释器。 通过理解和熟练掌握这些正则表达式知识点,开发者能够有效地在前端实现数据验证功能,确保用户输入的数据符合预期,从而提升应用程序的质量和...
12. **调试与测试**:使用在线工具(如Regex101、RegExr)可以帮助开发者调试和测试正则表达式,确保它们按预期工作。 总的来说,掌握正则表达式能够极大地提升你在处理字符串时的效率和灵活性。无论是简单的数据...
正则表达式调试工具是开发人员用来测试和优化这些模式的重要辅助工具。本文将详细介绍"正则表达式调试工具V3.0 绿色免费版"的特点及其在软件开发中的应用。 该调试工具界面简洁,旨在为开发者提供一个友好的环境来...
正则表达式是计算机编程中不可或缺的一部分,它是一种强大...不过,需要注意的是,虽然正则表达式强大,但如果没有得到正确的理解和使用,也容易造成复杂的bug或影响程序性能,因此在使用前应当谨慎并进行充分的测试。
描述中的“用于测试正则表达式的正确性,很好用的工具”进一步强调了这种工具的主要功能和优势。它能够帮助用户在不实际集成到代码中时验证正则表达式的正确性,避免因错误的正则导致的程序问题。此外,“很好用”...
"正则式工具(自动生成正则表达式)" 提供了一个便捷的平台,帮助用户自动化创建和测试正则表达式。这样的工具通常具有以下功能: 1. **自动生成**:用户输入示例文本或描述,工具会根据输入生成对应的正则表达式。...
`RegExp.exe`很可能是这个程序的可执行文件,可以直接运行以测试正则表达式。`ReadMe.txt`可能包含了使用说明、版权信息或开发者留下的注释,对于理解程序的工作原理和使用方法非常有帮助。 综上所述,这个汇编编写...
12. **最佳实践**:使用清晰的正则表达式,避免过度复杂,考虑性能影响,使用适当的方法处理匹配,如预编译模式以提高效率。 这个"正则表达式的ppt"可能包含了JavaScript和Java中正则表达式的基础知识、高级特性...
正则表达式的语法包含了一系列特殊字符和构造,如点号(.)代表任意字符,星号(*)表示前一个字符可以重复零次或多次,加号(+)表示至少一次,问号(?)表示零次或一次,以及方括号([])用于定义字符集。此外,...
JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理文本字符串,进行模式匹配、查找、替换等操作。在JavaScript中,正则表达式是一种强大的工具,可以帮助开发者实现复杂的数据验证、文本...
- **回溯和性能**:复杂的正则表达式可能导致大量的回溯,影响性能。优化正则表达式可以避免不必要的回溯,提高效率。 - **预编译和命名组**:在C#中,可以使用`RegexOptions.Compiled`选项预编译正则表达式以提高...
4. **代码生成**:对于多种编程语言(如Java、Python、JavaScript等),工具可能会自动生成匹配正则表达式的代码片段,方便用户将其集成到项目中。 5. **文档和教程**:内置的帮助文档和教程将帮助初学者理解和学习...
- **调试工具**:如regex101、RegExr等在线工具,可实时测试和调试正则表达式。 - **性能优化**:避免过度复杂的正则表达式,考虑使用更高效的匹配方法。 通过学习“正则表达式系统教程”,你可以深入了解正则...
8. **回溯**:理解正则表达式引擎如何处理回溯对于优化复杂正则表达式至关重要,避免不必要的回溯可以显著提升性能。 9. **在不同环境中的应用**:了解JavaScript、Python、Java、Perl等语言中正则表达式的异同,有...
6. **多语言支持**:正则表达式语法通常与编程语言有关,Regex Util可能支持多种语言的正则语法,如Java、JavaScript、Python等。 版本`com.ess.regexutil_1.2.4`可能包含以下特性或改进: - 性能优化,提高处理...
**JavaScript正则表达式迷你书(1.1版)** 正则表达式是JavaScript中一个强大的工具,用于处理文本字符串,进行模式匹配和查找、替换等操作。它们在编程逻辑中扮演着至关重要的角色,尤其是在处理字符串数据时,...
- **测试与调试**:使用在线正则表达式测试工具,如Regex101,帮助调试和优化表达式。 - **使用预编译模式**:对于频繁使用的正则表达式,预编译模式能提高性能。 通过以上讲解,你应能对Java中的正则表达式有一...