我会在一行分隔字符串上做一些工作。哪一个会更快,首先通过String.split分割文本,然后在结果数组上行走,或者直接通过reg exp遍历整个文本并在途中构建最终数组?性能问题:String.split然后走在数组或RegExp上?
11
A
回答
12
那么,得到答案的最好方法是花2分钟时间写出一个循环,它可以做到千次并检查萤火虫,看看哪一个是更快;)
我不得不优化大量的字符串工作在MXHR和我的经验,字符串方法明显比当前浏览器RegExps快。尽可能在最短的字符串上使用RegExps,并尽可能使用String方法做所有事情。
例如,我用这个小号码在我当前的代码:
var mime = mimeAndPayload.shift().split('Content-Type:', 2)[1].split(";", 1)[0].replace(' ', '');
这是丑陋的地狱,但信不信由你,它比在高负荷下的等效正则表达式显著更快。
1
我期望使用split()会快得多。这取决于很多细节,线数与长度,正则表达式的复杂度等。
9
虽然这两年半的时间晚了,希望这有助于一些线索就此事做任何未来的观众:http://jsperf.com/split-join-vs-regex-replace(包括对多个浏览器基准测试结果,以及功能性基准代码本身)
相关问题
- 1. 问题与String.split
- 2. String.Split效率问题
- 3. 如何在Velocity中使用string.split之后访问数组元素?
- 4. JavaScript RegExp问题
- 5. Flash RegExp问题
- 6. GetAll或GetList函数和性能问题
- 7. 数组序列化性能问题
- 8. Vista上的性能计数器问题
- 9. 问题RegExp和IE
- 10. 验证RegExp问题
- 11. RegExp逃脱问题?
- 12. 然后按顺序计数并选择Max by group,性能问题
- 13. 在xp性能问题上的mysql
- 14. find_by_sql或数组问题
- 15. 数组越界使用string.split
- 16. silverlight数学性能问题
- 17. 数据流性能问题
- 18. 数据库性能问题
- 19. Typescript在类中创建数组,然后推到数组上
- 20. NHIbernate(3.1) - Linq组,然后通过计数问题
- 21. 使用数组走在类
- 22. MyGeneration或SQL Server性能问题
- 23. 性能问题:使用“link_to”或“a”?
- 24. 性能问题
- 25. 性能问题
- 26. 性能问题
- 27. 性能问题
- 28. 性能问题
- 29. 性能问题
- 30. 性能问题
感谢您抽出宝贵的时间来回答。我也希望原生方法更快,但没有什么比IMO这个问题的经验更好。无论如何,谢谢=) – BYK 2009-06-08 20:17:46
这答案是基于经验:)如dfltr说,你需要为你的具体情况进行实验。 – RedFilter 2009-06-08 20:50:45