微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl中的字符串操作有多快?特别是连接和分配

Perl中字符串连接的速度有多快?它是否与第二个操作数的长度成线性关系?如果是这样,该操作需要满足哪些条件才是线性的?非线性串联时间的示例是什么?

那么字符串分配怎么样?何时何地发生缓冲区的实际副本?

那么像子串或简单正则表达式等其他操作呢?

解决方法

这是非常复杂的问题和答案取决于很多因素(架构,底层操作系统,硬件,Perl编译标志等)

要了解一个想法,您可以查看用于表示变量的perl结构的内部结构.好消息来源是perlguts illustrated.

如果您有特定的实现,请尝试对代码进行基准测试:

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) )
});

上面的内容比较了我的$c = $a操作. $b为各种长度的第二个参数.从结果可以看出,对于该长度范围,操作大致以线性时间运行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐