前段时间有朋友提出正则[0-9]与/d这两个哪个效率高,因此用如下Perl进行测试
#!/usr/bin/perl -w use Time::HiRes 'time'; $TimesToDo = 1000; $TestString = "42130987241264634" x 10000; $Count = $TimesToDo; $StartTime = time(); while ($Count-- > 0){ $TestString =~ m/^[0-9]+$/; } $EndTime = time(); printf("正则【[0-9]+】 %.3f seconds./n", $EndTime - $StartTime); $Count = $TimesToDo; $StartTime = time(); while ($Count-- > 0){ $TestString =~ m/^/d+$/; } $EndTime = time(); printf("正则【//d+】 %.3f seconds./n", $EndTime - $StartTime); $Count = $TimesToDo; $StartTime = time(); while ($Count-- > 0){ $TestString =~ m/^[0123456789]+$/; } $EndTime = time(); printf("正则【[0123456789]+】 %.3f seconds./n", $EndTime - $StartTime);
测试结果:
正则【[0-9]+】 0.655 seconds.
正则【/d+】 0.359 seconds.
正则【[0123456789]+】 2.413 seconds.