千家信息网

如何提升Perl性能

发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,小编给大家分享一下如何提升Perl性能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!变量和常量1,提升Perl性能时尽量减
千家信息网最后更新 2024年10月17日如何提升Perl性能

小编给大家分享一下如何提升Perl性能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

变量和常量

1,提升Perl性能时尽量减少数学表达式的计算,如:
$day=24*60*60;#不好
$day=86400;#better

2,使用vec函数而不是变量来存放非常小的数字。

print

1,如果输出里没有变量需要内插,使用单引号'而不是双引号".因为双引号会强制Perl检查可能插入的信息
2,多段输出时用,而不是.。因为连接操作符.会首先将字符串连接在一起,然后将其作为一个参数打印

避免没必要的引号

提升Perl性能时没有绝对必要不要使用引号:
my$copy="$large_string";
上述会$large_string做两次拷贝(一是拷贝到$copy另一次是引号内插),反之
my$copy=$large_string;
只做一次拷贝。

数组字符串化

同样摘自FAQ3.16
对于大数组字符串化:

{  local$,="\n";  print@big_array;  }  比下面两样都更节省内存  printjoin"\n",@big_array;   #or  {  local$"="\n";  print"@big_array";  }

引用\
提升Perl性能时如果使用大型数组或hash表,并使用它们作为函数的参数,那么应该使用它们的一个引用,而不应该直接使用它们。通过使用引用,可以告诉函数指向信息的指针。如果不使用引用,就需要将整个数组或hash表复制到该函数的调用栈中,然后在函数中再次对其进行复制。引用还可以节省内存(这可以减少足迹和管理的负载),并简化您的编程。

循环

尽早在循环内放置条件语句,以使Perl不执行无用的语句。如
while(){
chomp;
nextif/^#/;

next可以放在chomp上面。

有选择性地使用map和grep

因为map和grep是使用LIST列表参数,所以这么做
@wanted=grep{/pattern/};
会一次性读入整个文件。对于大文件来说,使用循环会更好一点:
while(){
push(@wanted,$_)if/pattern/;
}

正则表达式

pack/unpack>regexp>substr
删除字符串中的字符时用tr///d来代替s///g
在正则表达式的外面使用"or"或"||"操作。
$found=if/one/||/two/;#better
$found=if/one|two/;#useabovetoreplace

如果字符串很长,正则表达式很复杂,可以使用study来加快速度

数据结构

Tie::SubstrHash对于某些类型的数据结构会有所帮助
=pod
提升Perl性能时如果您用了一大块pod来描述你的代码,那么请尽量不要将其放在文件的上面或中间部分。虽然perl分析器能很快的跳过pod,但是这不是魔法,它还是需要一点时间的。它还是需要从磁盘中读入它,并且读入的目的仅仅是忽略它。将所有的pod放到__END__后面,那样Perl编译器就不会去注意它。
但是将pod与相关代码放在一起或许是种好习惯。
warnings/strict
强烈建议编程和调试时开启,而在代码发布时去掉它们。

Final

***强烈建议各位阅读参考里的"Whenperlisnotquitefastenough"。

以上是"如何提升Perl性能"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

性能 字符 引号 函数 字符串 数组 表达式 代码 参数 变量 拷贝 文件 正则 篇文章 循环 必要 信息 内存 内容 建议 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 腾讯云服务器总是失去桌面连接 电信光猫拨号服务器地址 杭州汇江融海网络技术公司 一条数据插入数据库会发生什么 WOW数据库技术流视频 力软软件开发教程 为什么有网还显示无法连接服务器 软件开发创业企业团队介绍 服务器文件夹删除了如何恢复 计算机网络技术程序题 二道区智能网络技术哪家好 数据库吃青春饭的吗 广东农业科研课题项目软件开发 网络安全服务的收入有哪些内容 服务器外网设置 西瓜服务器新闻 华为服务器变更超聚变 数据库系统基础教学百度云 大庆公安局网络安全之队成立 数据库获取两个结果的差集 嘉定区网络技术服务维护方法 数据库报12899错误 为什么数据库的表会少 wasm在浏览器中连接数据库 绿尚软件开发股份有限公司 怎么写软件开发功能需求文档 数据库常用技术指标 ntp服务器 软件 亚马逊运用数据库营销 想代理小程序没学过软件开发
0