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

Perl中的字符串 *** 作有多快?特别是连接和分配,第1张

概述Perl中字符串连接的速度有多快?它是否与第二个 *** 作数的长度成线性关系?如果是这样,该 *** 作需要满足哪些条件才是线性的?非线性串联时间的示例是什么? 那么字符串分配怎么样?何时何地发生缓冲区的实际副本? 那么像子串或简单正则表达式等其他 *** 作呢? 这是非常复杂的问题和答案取决于很多因素(架构,底层 *** 作系统,硬件,Perl编译标志等) 要了解一个想法,您可以查看用于表示变量的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为各种长度的第二个参数.从结果可以看出,对于该长度范围, *** 作大致以线性时间运行.

总结

以上是内存溢出为你收集整理的Perl中的字符串 *** 作有多快?特别是连接和分配全部内容,希望文章能够帮你解决Perl中的字符串 *** 作有多快?特别是连接和分配所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1213358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存