我敢打赌,如果这真的是一个简单的案例(不涉及真正的正则表达式),C 会赢(memchr() 和朋友),否则 TCL 将是一个强有力的竞争者,其次是 Perl(后者需要良好的制作技能用于正则表达式设计)。
附录:再次阅读您的描述(以及随附的链接),我会说您应该测试一些工具并比较结果。您能否为我们(某处)提供一个输入文件并根据该文件指定确切的问题?
附录 2(费曼):
我保存了这个站点(~44KB,'sof.dat')并进行了重复搜索测试
(正如您建议的那样:“网站设计/”)在 Perl 中。这是使用的代码:
...
use Benchmark qw' timeit timestr ';
{
open my $fh, '<', 'sof.dat' or die $!;
undef $/;
our $data = <$fh>;
close $fh;
my $count = 100000;
my $t = timeit($count, ' $data =~ m|site design /| ? 1 : 0 ' );
print "$count loops of code took:", timestr($t),"\n";
}
...
使用我的设置(2.4GHz E6600、Win7、Activeperl),出现以下时序:
100000 次代码循环:1 挂钟秒
(1.36 usr + 0.00 sys = 1.36 CPU) @ 73746.31/s (n=100000)
也就是说,我每秒可以在这个页面上找到这个文本大约 74000 次。
如果我包含完整的文件处理:
use Benchmark qw' timeit timestr ';
{
my $count = 10000;
my $t = timeit($count, q{
open my $fh, '<', 'sof.dat' or die $!;
undef $/;
our $data = <$fh>;
close $fh;
$data =~ m|site design /| ? 1 : 0
} );
print "$count loops of code took:", timestr($t),"\n";
}
我们只会得到:
10000 次代码循环:3 挂钟秒(1.70 usr + 1.51 sys = 3.21 CPU)@ 3110.42/s (n=10000)
每秒大约 3000 次搜索/查找通道。
问候
rbo