我读过几次unpack()
比这更快substr()
,特别是随着子串数量的增加.但是,这个基准建议不然.我的基准测试是否存在缺陷,或者是unpack()
旧版Perl的保留所谓的性能优势?
use strict;
use warnings;
use Benchmark;
my ($data, $format_string, $n_substrings);
my %methods = (
unpack => sub { return unpack $format_string, $data },
substr => sub { return map {substr $data, $_, 1} 0 .. $n_substrings - 1 },
);
for my $exp (1 .. 5){
$n_substrings = 10 ** $exp;
print $n_substrings, "\n";
$format_string = 'a1' x $n_substrings;
$data = 9 x $n_substrings;
Benchmark::cmpthese -2, \%methods;
}
Run Code Online (Sandbox Code Playgroud)
输出(在Windows上):
10
Rate unpack substr …
Run Code Online (Sandbox Code Playgroud) 我在Perl中有一个长度为23位的字符串.我需要将它分成不同的部分.一个变量中的前两个数字,另一个变量中的下一个3,另一个变量中的下一个4等等.基本上23个数字最终需要作为6个单独的变量(2,3,4,4,3,7)字符,其中订购.
我有什么想法可以像这样切断字符串?
perl ×2