测试环境:
CentOS release 4.7
perl, v5.8.5
测试代码:
- print scalar localtime;
- print “n”;
- for (my $i=0;$i<10000000;$i++)
- {
- # 方法一:使用pack
- $a = unpack(’N*’, pack(’C4′, split(/./, ‘193.168.20.3′)));
- # 方式二:使用正则加四则运算
- #’193.168.20.2′ =~ /(d+).(d+).(d+).(d+)/;
- #$a = $1 * 256**3 + $2 * 256**2 + $3 * 256 + $4;
- # 方式三:使用Split加四则运算
- #($a,$b,$c,$d) = split(/./,’193.168.20.2′);
- #$e = $a * 256**3 + $b * 256**2 + $c * 256 + $d;
- }
- print scalar localtime;
- print “n”;
测试结果:
方法一(33s):
[root@localhost tmp]# perl 123.pl
Wed Jul 15 14:22:08 2009
Wed Jul 15 14:22:41 2009
内存占用:1456
方法二(44s):
[root@localhost tmp]# perl 123.pl
Wed Jul 15 14:21:05 2009
Wed Jul 15 14:21:49 2009
内存占用:1488
方法三(31s):
[root@localhost tmp]# perl 123.pl
Wed Jul 15 14:36:05 2009
Wed Jul 15 14:36:36 2009
内存占用:1436
split加四则运算方法略胜出。
有点意外的是pack的开销居然和正则引擎接近俄。
转自http://blog.yikuyiku.com/?p=1004
转载于:https://blog.51cto.com/zorro/1153335