国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - 提高PHP性能的編碼技巧以及性能優(yōu)化詳細(xì)解析

提高PHP性能的編碼技巧以及性能優(yōu)化詳細(xì)解析

2020-05-17 14:29PHP教程網(wǎng) PHP教程

include文件時盡量使用絕對路徑,因為它避免了PHP去include_path里查找文件的速度,解析操作系統(tǒng)路徑所需的時間會更少

0、用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會,注意:只有echo能這 么做,它是 一種可以把多個字符串當(dāng)作參數(shù)的“函數(shù)”(譯注:PHP手冊中說echo是語言結(jié)構(gòu),不是真正的函數(shù),故把函數(shù)加上了雙引號)。

1、如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。

2、$row['id'] 的速度是$row[id]的7倍。

3、echo 比 print 快,并且使用echo的多重參數(shù)(譯注:指用逗號而不是句點)代替字符串連接,比如echo $str1,$str2。

4、在執(zhí)行for循環(huán)之前確定最大循環(huán)數(shù),不要每循環(huán)一次都計算最大值,最好運用foreach代替。

5、注銷那些不用的變量尤其是大數(shù)組,以便釋放內(nèi)存。

6、盡量避免使用 __get,__set,__autoload。

7、require_once()代價昂貴。

8、include文件時盡量使用絕對路徑,因為它避免了PHP去include_path里查找文件的速度,解析操作系統(tǒng)路徑所需的時間會更少。

9、如果你想知道腳本開始執(zhí)行(譯注:即服務(wù)器端收到客戶端請求)的時刻,使用$_SERVER[‘REQUEST_TIME']要好于time()。

10、函數(shù)代替正則表達(dá)式完成相同功能。

11、str_replace函數(shù)比preg_replace函數(shù)快,但strtr函數(shù)的效率是str_replace函數(shù)的四倍。

12、如果一個字符串替換函數(shù),可接受數(shù)組或字符作為參數(shù),并且參數(shù)長度不太長,那么可以考慮額外寫一段替換代碼,使得每次傳遞參數(shù)是一個字符,而不是只寫一行代碼接受數(shù)組作為查詢和替換的參數(shù)。

13、使用選擇分支語句(譯注:即switch case)好于使用多個if,else if語句。

14、用@屏蔽錯誤消息的做法非常低效,極其低效。

15、打開apache的mod_deflate模塊,可以提高網(wǎng)頁的瀏覽速度。

16、數(shù)據(jù)庫連接當(dāng)使用完畢時應(yīng)關(guān)掉,不要用長連接。

17、錯誤消息代價昂貴。

18、在方法中遞增局部變量,速度是最快的。幾乎與在函數(shù)中調(diào)用局部變量的速度相當(dāng)。

19、遞增一個全局變量要比遞增一個局部變量慢2倍。

20、遞增一個對象屬性(如:$this->prop++)要比遞增一個局部變量慢3倍。

21、遞增一個未預(yù)定義的局部變量要比遞增一個預(yù)定義的局部變量慢9至10倍。

22、僅定義一個局部變量而沒在函數(shù)中調(diào)用它,同樣會減慢速度(其程度相當(dāng)于遞增一個局部變量)。 PHP大概會檢查看是否存在全局變量。

23、方法調(diào)用看來與類中定義的方法的數(shù)量無關(guān),因為我(在測試方法之前和之后都)添加了10個方法,但性能上沒有變化。

24、派生類中的方法運行起來要快于在基類中定義的同樣的方法。

25、調(diào)用帶有一個參數(shù)的空函數(shù),其花費的時間相當(dāng)于執(zhí)行7至8次的局部變量遞增操作。類似的方法調(diào)用所花費的時間接近于15次的局部變量遞增操作。

26、Apache解析一個PHP腳本的時間要比解析一個靜態(tài)HTML頁面慢2至10倍。盡量多用靜態(tài)HTML頁面,少用腳本。

27、除非腳本可以緩存,否則每次調(diào)用時都會重新編譯一次。引入一套PHP緩存機制通常可以提升25%至100%的性能,以免除編譯開銷。

28、盡量做緩存,可使用memcached。memcached是一款高性能的內(nèi)存對象緩存系統(tǒng),可用來加速動態(tài)Web應(yīng)用程序,減輕數(shù)據(jù)庫負(fù)載。對運算碼 (OP code)的緩存很有用,使得腳本不必為每個請求做重新編譯。

29、當(dāng)操作字符串并需要檢驗其長度是否滿足某種要求時,你想當(dāng)然地會使用strlen()函數(shù)。此函數(shù)執(zhí)行起來相當(dāng)快,因為它不做任何計算, 只返回在 zval 結(jié)構(gòu)(C的內(nèi)置數(shù)據(jù)結(jié)構(gòu),用于存儲PHP變量)中存儲的已知字符串長度。但是,由于strlen()是函數(shù),多多少少會有些慢,因為函數(shù)調(diào)用會經(jīng)過諸多步 驟,如字母小寫化(譯注:指函數(shù)名小寫化,PHP不區(qū)分函數(shù)名大小寫)、哈希查找,會跟隨被調(diào)用的函數(shù)一起執(zhí)行。在某些情況下,你可以使用isset() 技巧加速執(zhí)行你的代碼。

(舉例如下)

if (strlen($foo) < 5) { echo “Foo is too short”$$ }

(與下面的技巧做比較)

if (!isset($foo{5})) { echo “Foo is too short”$$ }

調(diào)用isset()恰巧比strlen()快,因為與后者不同的是,isset()作為一種語言結(jié)構(gòu),意味著它的執(zhí)行不需要函數(shù)查找和字母小寫化。也就是說,實際上在檢驗字符串長度的頂層代碼中你沒有花太多開銷。

34、當(dāng)執(zhí)行變量$i的遞增或遞減時,$i++會比++$i慢一些。這種差異是PHP特有的,并不適用于其他語言,所以請不要修改你的C或 Java代碼并 指望它們能立即變快,沒用的。++$i更快是因為它只需要3條指令(opcodes),$i++ 則需要4條指令。后置遞增實際上會產(chǎn)生一個臨時變量,這個臨時變量隨后被遞增。而前置遞增直接在原值上遞增。這是最優(yōu)化處理的一種,正如Zend的PHP 優(yōu)化器所作的那樣。牢記這個優(yōu)化處理不失為一個好主意,因為并不是所有的指令優(yōu)化器都會做同樣的優(yōu)化處理,并且存在大量沒有裝配指令優(yōu)化器的互聯(lián)網(wǎng)服務(wù)提 供商(ISPs)和服務(wù)器。

35、并不是事必面向?qū)ο?(OOP),面向?qū)ο笸_銷很大,每個方法和對象調(diào)用都會消耗很多內(nèi)存。

36、并非要用類實現(xiàn)所有的數(shù)據(jù)結(jié)構(gòu),數(shù)組也很有用。

37、不要把方法細(xì)分得過多,仔細(xì)想想你真正打算重用的是哪些代碼?

38、當(dāng)你需要時,你總能把代碼分解成方法。

39、盡量采用大量的PHP 內(nèi)置函數(shù)。

40、如果在代碼中存在大量耗時的函數(shù),你可以考慮用C擴展的方式實現(xiàn)它們。

41、評估檢驗(profile)你的代碼。檢驗器會告訴你,代碼的哪些部分消耗了多少時間。 Xdebug調(diào)試器包含了檢驗程序,評估檢驗總體上可以顯示出代碼的瓶頸。

42、mod_zip可作為Apache模塊,用來即時壓縮你的數(shù)據(jù),并可讓數(shù)據(jù)傳輸量降低 80%。

43、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情況下,盡量用 file_get_contents,因為他的效率高得多!但是要注意file_get_contents在打開一個URL文件時候的PHP版本問題;

44、盡量的少進行文件操作,雖然PHP的文件操作效率也不低的;

45、優(yōu)化Select SQL語句,在可能的情況下盡量少的進行Insert、Update操作;

46、盡可能的使用PHP內(nèi)部函數(shù)(但是我卻為了找個PHP里面不存在的函數(shù),浪費了本可以寫出一個自定義函數(shù)的時間,經(jīng)驗問題啊!);

47、循環(huán)內(nèi)部不要**變量,尤其是大變量:對象(這好像不只是PHP里面要注意的問題吧?);

48、多維數(shù)組盡量不要循環(huán)嵌套賦值;

49、在可以用PHP內(nèi)部字符串操作函數(shù)的情況下,不要用正則表達(dá)式;

50、foreach效率更高,盡量用foreach代替while和for循環(huán);

51、用單引號替代雙引號引用字符串;

52、“用i+=1代替i=i+1。符合c/c++的習(xí)慣,效率還高”;

53、對global變量,應(yīng)該用完就unset()掉;

--------------------------------------------------------------------------------------

1、 對許多代碼文件說,特別是含有很多包含文件(include or require)。它們需要花費更多的時間和解析并產(chǎn)生中間代碼。

2、 即使PHP代碼文件沒有發(fā)生改變,這個執(zhí)行過程還會嚴(yán)格的按照流程執(zhí)行。也就是說,無論你的應(yīng)該程序是否發(fā)生改變,每次調(diào)用的時候,都需要重新編譯生成opcode碼。(其實這就是編譯緩存存在的理由)

3、 這個流程不僅僅發(fā)生在主要的代碼文件,對于每一次的include和require來說,都會執(zhí)行這個流程。(這是可以繼續(xù)優(yōu)化的)

可以利用APC維護

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人免费视频视频在线观看 免费 | 日韩成人在线观看 | 免费的av网站 | 欧美日韩精品久久久 | 亚洲精品综合中文字幕 | 国产91视频在线观看 | av成人在线观看 | 精品1区| 亚洲视频一区二区 | 亚洲毛片在线 | 欧美日韩久久精品 | www久| 欧美韩日 | 亚洲久草 | 成人伊人网 | 久久精品亚洲精品 | 国产精品久久久久无码av | 欧美xo影院 | 99精品欧美一区二区蜜桃免费 | 免费日韩成人 | 国产精品入口在线观看 | 特黄特黄aaaa级毛片免费看 | 全部免费毛片在线播放 | 色成人亚洲www78ixcom | 欧美一区不卡 | 精品毛片在线 | 久久久久久久久久久高潮 | 亚洲精品视频在线播放 | 国产成人精品一区二区三区网站观看 | 高清视频一区 | 欧美一级二级三级 | 国产精品极品美女在线观看免费 | 99免费精品视频 | 亚洲专区在线播放 | 成人黄色在线观看 | 亚洲免费人成在线视频观看 | 中文一区 | 成人在线看片 | 日韩在线成人 | 国产一区二区三区视频 | 亚洲三级免费观看 |