ags*_*mek 3 string perl performance
Perl中字符串连接的速度有多快?它是否与第二个操作数的长度成线性关系?如果是这样,该操作需要满足哪些条件才是线性的?非线性串联时间的示例是什么?
那么字符串分配怎么样?何时何地发生缓冲区的实际副本?
那么像子串或简单正则表达式等其他操作呢?
这是非常复杂的问题和答案取决于很多因素(架构,底层操作系统,硬件,Perl编译标志等)
要了解一个想法,您可以查看用于表示变量的perl结构的内部结构.好的来源是perlguts说明.
如果您有特定的实现,请尝试对代码进行基准测试:
use Benchmark qw(:all);
my $a = "Some string";
my @b = map { "Some string to append " x $_ } (1..10);
cmpthese(-1, {
( map {+ "concat_$_" => sub { my $c = $a . $b[$_] } } (1..10) )
});
Run Code Online (Sandbox Code Playgroud)
上面的事情比较my $c = $a . $b了第二个参数的各种长度的操作.从结果可以看出,对于该长度范围,操作大致以线性时间运行.
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |