六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 50|回复: 0

string 切分的效率实验

[复制链接]

升级  3.33%

13

主题

13

主题

13

主题

秀才

Rank: 2

积分
55
 楼主| 发表于 2013-1-28 18:54:49 | 显示全部楼层 |阅读模式
正在作的项目要对一万个string做切分,有以下两个可选方案:
1. 用string的split方法来切分
2. 用正则表达式来切分
 

想要知道哪种效率高我们还是来做个实验吧:
 
浏览器 firefox 3.6.3
OS       Kubuntu 9.04
 
测试计划:
先循环生成 100,000 个类似xxx,yyy,zzz的字符串,按逗号切分
 
1. stinrg 的split 方法切分:

实验代码:
<html>        <head></head>        <body>        </body>        <script type="text/javascript">                        var num = 100000;                        var ret = [];                        for(var i = 0; i<num; i++){                                ret [ret.length] = "id" + i + ",title" + i + ",name" + i;                        }                        var start = new Date().getTime();                        var sep = ',';                        for(var i = 0; i<ret.length ; i++){                                ret[i].split(sep);                        }                        var end = new Date().getTime();                        document.write("use split() to parse " + num + "strings costs " + (end - start) + " ms");        </script></html> 
此方案的测试结果是:
use split() to parse 100000strings costs 172 ms  
2. 用正则切分
 
实验代码:
<html>        <head></head>        <body>        </body>        <script type="text/javascript">                        var num = 100000;                        var ret = [];                        for(var i = 0; i<num; i++){                                ret [ret.length] = "id" + i + ",title" + i + ",name" + i;                        }                        var start = new Date().getTime();                        var pattern = /(.*),(.*),(.*)$/;                        for(var i = 0; i<ret.length ; i++){                                pattern.exec(ret[i]);                        }                        var end = new Date().getTime();                        document.write("use regx to parse " + num + "strings costs " + (end - start) + " ms");        </script></html> 
此方案的结果为:
use regx to parse 100000strings costs 1300 ms 
 
由上面的结果可以看出split方案的效率远远高于正则的方案阿。
但是这个结果也不能说字符串的操作效率会比正则高,但是最起码我们可以得出这样结论:
字符串的规则切分还是split操作效率高
 
一切还是要以数据说话呵呵。虽然有点麻烦的说
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表