自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從細(xì)節(jié)處提升Perl性能

開發(fā) 架構(gòu)
本文向大家簡單介紹一下Perl性能問題,Perl語言有很多值得我們學(xué)習(xí)的地方,這里說一下如何從細(xì)節(jié)處提升Perl性能。

本文向大家介紹一下如何從細(xì)節(jié)處提升Perl性能,主要包括變量和常量,循環(huán),數(shù)據(jù)結(jié)構(gòu),數(shù)組字符串化等細(xì)節(jié),希望本文的介紹能讓你有所收獲。

從細(xì)節(jié)處提升Perl性能

下面所寫的各點(diǎn)都是我從其他地方找過來了。整理一下希望對(duì)各位有所幫助。

變量和常量

1,提升Perl性能時(shí)盡量減少數(shù)學(xué)表達(dá)式的計(jì)算,如:
$day=24*60*60;#不好
$day=86400;#better

2,使用vec函數(shù)而不是變量來存放非常小的數(shù)字。

print

1,如果輸出里沒有變量需要內(nèi)插,使用單引號(hào)'而不是雙引號(hào)".因?yàn)殡p引號(hào)會(huì)強(qiáng)制Perl檢查可能插入的信息
2,多段輸出時(shí)用,而不是.。因?yàn)檫B接操作符.會(huì)首先將字符串連接在一起,然后將其作為一個(gè)參數(shù)打印

避免沒必要的引號(hào)

提升Perl性能時(shí)沒有絕對(duì)必要不要使用引號(hào):
my$copy="$large_string";
上述會(huì)$large_string做兩次拷貝(一是拷貝到$copy另一次是引號(hào)內(nèi)插),反之
my$copy=$large_string;
只做一次拷貝。

數(shù)組字符串化

同樣摘自FAQ3.16
對(duì)于大數(shù)組字符串化:
 

  1. {  
  2. local$,="\n";  
  3. print@big_array;  
  4. }  
  5. 比下面兩樣都更節(jié)省內(nèi)存  
  6. printjoin"\n",@big_array;  
  7.  
  8. #or  
  9. {  
  10. local$"="\n";  
  11. print"@big_array";  
  12. }  
  13.  

引用\
提升Perl性能時(shí)如果使用大型數(shù)組或hash表,并使用它們作為函數(shù)的參數(shù),那么應(yīng)該使用它們的一個(gè)引用,而不應(yīng)該直接使用它們。通過使用引用,可以告訴函數(shù)指向信息的指針。如果不使用引用,就需要將整個(gè)數(shù)組或hash表復(fù)制到該函數(shù)的調(diào)用棧中,然后在函數(shù)中再次對(duì)其進(jìn)行復(fù)制。引用還可以節(jié)省內(nèi)存(這可以減少足跡和管理的負(fù)載),并簡化您的編程。

循環(huán)

盡早在循環(huán)內(nèi)放置條件語句,以使Perl不執(zhí)行無用的語句。如
while(){
chomp;
nextif/^#/;

next可以放在chomp上面。

有選擇性地使用map和grep

因?yàn)閙ap和grep是使用LIST列表參數(shù),所以這么做
@wanted=grep{/pattern/};
會(huì)一次性讀入整個(gè)文件。對(duì)于大文件來說,使用循環(huán)會(huì)更好一點(diǎn):
while(){
push(@wanted,$_)if/pattern/;
}

正則表達(dá)式

pack/unpack>regexp>substr
刪除字符串中的字符時(shí)用tr///d來代替s///g
在正則表達(dá)式的外面使用“or”或“||”操作。
$found=if/one/||/two/;#better
$found=if/one|two/;#useabovetoreplace

如果字符串很長,正則表達(dá)式很復(fù)雜,可以使用study來加快速度

數(shù)據(jù)結(jié)構(gòu)

Tie::SubstrHash對(duì)于某些類型的數(shù)據(jù)結(jié)構(gòu)會(huì)有所幫助
=pod
提升Perl性能時(shí)如果您用了一大塊pod來描述你的代碼,那么請(qǐng)盡量不要將其放在文件的上面或中間部分。雖然perl分析器能很快的跳過pod,但是這不是魔法,它還是需要一點(diǎn)時(shí)間的。它還是需要從磁盤中讀入它,并且讀入的目的僅僅是忽略它。將所有的pod放到__END__后面,那樣Perl編譯器就不會(huì)去注意它。
但是將pod與相關(guān)代碼放在一起或許是種好習(xí)慣。
warnings/strict
強(qiáng)烈建議編程和調(diào)試時(shí)開啟,而在代碼發(fā)布時(shí)去掉它們。

Final

***強(qiáng)烈建議各位閱讀參考里的“Whenperlisnotquitefastenough”。

【編輯推薦】

  1. 術(shù)語匯編 Perl閉包概念解析
  2. Perl模式匹配參數(shù)使用詳解
  3. 實(shí)例解析Perl多進(jìn)程技術(shù)的應(yīng)用
  4. 學(xué)習(xí)筆記 Perl split函數(shù)用法指導(dǎo)
  5. Perl多進(jìn)程及其和多線程的關(guān)系解析
責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2011-07-09 23:24:57

PHP

2012-06-29 09:47:42

筆記本評(píng)測(cè)

2019-04-12 09:45:57

Web網(wǎng)絡(luò)線程性能

2010-01-19 17:28:36

東方通中間件

2019-11-05 14:37:24

Java性能優(yōu)化編程語言

2021-08-17 09:46:57

設(shè)計(jì)細(xì)節(jié)產(chǎn)品體驗(yàn)用戶

2023-08-21 12:10:08

算法AI

2023-11-17 18:02:19

數(shù)據(jù)倉庫性能Doris

2010-09-21 16:27:58

OracleOOWSPARC T3

2010-07-26 16:35:34

Perl性能

2010-11-22 09:36:37

Perl腳本SolarisLinux

2010-07-26 12:50:45

Perl性能

2022-02-22 16:21:04

Windows 11微軟

2019-09-24 15:41:10

Web前端傳輸

2021-10-25 10:23:49

Webpack 前端Tree shakin

2010-05-28 10:23:59

JavaScriptWeb

2021-09-27 08:16:38

Webpack 前端Cache

2013-05-22 09:38:03

GoGo語言Go性能

2023-04-10 09:15:25

Vite 4.3SWC 插件

2020-07-24 07:00:00

Laravel框架Web應(yīng)用開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)