中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何提升Perl性能

發布時間:2021-12-06 10:02:14 來源:億速云 閱讀:240 作者:小新 欄目:開發技術

小編給大家分享一下如何提升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性能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋州市| 巧家县| 兰溪市| 桂林市| 溆浦县| 南召县| 三明市| 江阴市| 武邑县| 拜城县| 渝中区| 胶南市| 澜沧| 新郑市| 昌江| 津市市| 西吉县| 清流县| 北海市| 青冈县| 安乡县| 黔西| 灵寿县| 扶沟县| 徐闻县| 南江县| 永寿县| 阿勒泰市| 广河县| 贞丰县| 简阳市| 理塘县| 开化县| 琼中| 河南省| 辽阳市| 锡林郭勒盟| 新泰市| 客服| 沂水县| 谢通门县|