PHP是(shì)Hypertext Preprocessor的(de)簡稱,即超文(wén)本預處理(lǐ)器(qì),是(shì)網站σ(zhàn)建設、網站(zhàn)開(kāi)發中通(tōng)用(yòng)的(de)一(yī)種開(kā±i)源腳本語言。PHP編程就(jiù)是(shì)通(tōng)過即定的(de)程序代碼,來(lái)完成Web開(kāi)發工(gōng)作(zεuò)中的(de)各類頁面的(de)制(zhì)作(zuò),所以網站(zhàn)制(zhì)作(zuò)師(shī)、網站(zhàn)建設工(gōng)程師(shī)和(hé↕)網站(zhàn)設計(jì)師(shī)都(dōu)需要(yào)懂(dǒng)一(yī)些(xiē)PH♦P編程的(de)知(zhī)識。由于PHP的(de)跨平台,性能(néng)優越等特點,被很(hěn)多(duō)開(kāi)發者喜愛(ài)。
PHP的(de)簡單介紹
PHP相(xiàng)較與其他(tā)的(de)編程語言,将程序嵌入到(dào)HTML(标準通(tōng)用(αyòng)标記語言下(xià)的(de)一(yī)個(gè)應用(yòng))文(wén)檔中去(qù)執行(xíng),執行(xíng)效率比完全生(shēng)成HTML标λ記的(de)CGI要(yào)高(gāo)很(hěn)多(duō);還(hái)可(kě)以執行(xíng)編譯後代碼,編譯可(kě)以達到(dào)加密和(hé)優化(huà)代碼運行(xíng)、使代碼運行(xíng)更快(kuài)的(de)效果。
PHP外(wài)貿網站(zhàn)建設提高(gāo)效率的(de)53個(gè)要(yào)點
提高(gāo)PHP編程效率的(de)53個(gè)要(yào)點
用(yòng)單引号代替雙引号來(lái)包含字符串,這(zhè)樣做(zuò)會(huì)更快(kuài)一(yī)些(xiē)。因為(wèi)PHP會(huì)在雙引号包圍的(≤de)字符串中搜尋變量,單引号則不(bù)會(huì),注意:隻有(yǒu)echo能(néng)這(zΩhè)麽做(zuò),它是(shì)一(yī)種可(kě)以把多(duō)個(gè)字符串當作(zuò)參數(shù)的(d e)“函數(shù)”(譯注:PHP手冊中說(shuō)echo是(shì)語言結構,不(bù)是(shì)真正的(de)函數÷(shù),故把函數(shù)加上(shàng)了(le)雙引号)。
1、如(rú)果能(néng)将類的(de)方法定義成static,就(jiù)盡量定義成static,它的(de)速度會(huì)提升将近(jìn)4倍。
2、$row['id'] 的(de)速度是(shì)$row[id]的(de)7倍。
3、echo 比 print 快(kuài),并且使用(yòng)echo的(de)多(duō)重參數(shù)(譯注:指用(&yòng)逗号而不(bù)是(shì)句點)代替字符串連接,比如(rú)echo $str1,$str2。
4、在執行(xíng)for循環之前确定最大(dà)循環數(shù),不(bù)要(yào)每循環一(yī)次都(dōu)計(jì)算(suàn)'最大(dà)值,最好(hǎo)運用(yòng)foreach代替。
5、注銷那(nà)些(xiē)不(bù)用(yòng)的(de)變量尤其是(shì)大(dà)數(shù)組,以便釋放(fàng)內(nèi)存。
6、盡量避免使用(yòng)__get,__set,__autoload。
7、require_once()代價昂貴。
8、include文(wén)件(jiàn)時(shí)盡量使用(yòng)絕對(duì)路(lù)徑,因為(wèi)它避免了(le)PHP去(qù)include_path裡(lǐ)查找文(wénα)件(jiàn)的(de)速度,解析操作(zuò)系統路(lù)徑所需的(de)時(shí)間(jiān)會(huì)更少(shǎo)。
9、如(rú)果你(nǐ)想知(zhī)道(dào)腳本開(kāi)始執行(xíng)(譯注:即服務器(qì)端收到(dào)客戶端請( qǐng)求)的(de)時(shí)刻,使用(yòng)$_SERVER[‘REQUEST_TIME']要(yào)好(hǎo)于time() 。
10、函數(shù)代替正則表達式完成相(xiàng)同功能(néng)。
11、str_replace函數(shù)比preg_replace函數(shù)快(kuài),但(dàn)s®trtr函數(shù)的(de)效率是(shì)str_replace函數(shù)的(de)四倍。
12、如(rú)果一(yī)個(gè)字符串替換函數(shù),可(kě)接受數(shù)組或字符作(zuò)為≈(wèi)參數(shù),并且參數(shù)長(cháng)度不(bù)太長(cháng),那(nà)麽可(kě)以考慮額外(w★ài)寫一(yī)段替換代碼,使得(de)每次傳遞參數(shù)是(shì)一(yī)個(gè)字符,而不(bù)是(shì)隻寫一(yī)★行(xíng)代碼接受數(shù)組作(zuò)為(wèi)查詢和(hé)替換的(de)參數(shù)。
13、使用(yòng)選擇分(fēn)支語句(譯注:即switch case)好(hǎo)于使用(yòng)多(duō)個(gè)if,else iπf語句。
14、用(yòng)@屏蔽錯(cuò)誤消息的(de)做(zuò)法非常低(dī)效,極其低(dī)效。
15、打開(kāi)apache的(de)mod_deflate模塊,可(kě)以提高(gāo)網頁的(de)浏覽速度。
16、數(shù)據庫連接當使用(yòng)完畢時(shí)應關掉,不(bù)要(yào)用(yòng)長(cháng)連接。&≈nbsp;
17、錯(cuò)誤消息代價昂貴。
18、在方法中遞增局部變量,速度是(shì)最快(kuài)的(de)。幾乎與在函數(shù)中調用(yòng)局部變量的(deβ)速度相(xiàng)當。
19、遞增一(yī)個(gè)全局變量要(yào)比遞增一(yī)個(gè)局部變量慢(màn)2倍。
20、遞增一(yī)個(gè)對(duì)象屬性(如(rú):$this->prop++)要(yào)比遞增一(yī)個(gè)局部變量慢(màn)✘3倍。
21、遞增一(yī)個(gè)未預定義的(de)局部變量要(yào)比遞增一(yī)個(gè)預定義的(de)≥局部變量慢(màn)9至10倍。
22、僅定義一(yī)個(gè)局部變量而沒在函數(shù)中調用(yòng)它,同樣會(huì)減慢(màn)速度(其程度相(xiàng)當于遞增一(yī)個(πgè)局部變量)。PHP大(dà)概會(huì)檢查看(kàn)是(shì)否存在全局變量。
23、方法調用(yòng)看(kàn)來(lái)與類中定義的(de)方法的(de)數(shù)量無關,因為(wèi)我(在測試方法之前和★(hé)之後都(dōu))添加了(le)10個(gè)方法,但(dàn)性能(néng)上(shàng)沒有(yǒu)變化(huà)。
24、派生(shēng)類中的(de)方法運行(xíng)起來(lái)要(yào)快(kuài)于在基類中定義的(de)同樣的(de)方法。
25、調用(yòng)帶有(yǒu)一(yī)個(gè)參數(shù)的(de)空(kōng)函數(shù),其花(hu§ā)費(fèi)的(de)時(shí)間(jiān)相(xiàng)當于執行(xíng)7至8次的(de)局部變量遞增操作(zuò)。類似的(de)方 法調用(yòng)所花(huā)費(fèi)的(de)時(shí)間(jiān)接近(jìn)于15次的(de)局部變量遞增操作(zuò)。
26、Apache解析一(yī)個(gè)PHP腳本的(de)時(shí)間(jiān)要(yào)比解析一(yī)個(gè)靜(jìng)态HTML頁面慢(màn) 2至10倍。盡量多(duō)用(yòng)靜(jìng)态HTML頁面,少(shǎo)用(yòng)腳本。
27、除非腳本可(kě)以緩存,否則每次調用(yòng)時(shí)都(dōu)會(huì)重新編譯一(yī)次。引入一(yī)套PHP緩存機(jī)制(zhì)通(tō∞ng)常可(kě)以提升25%至100%的(de)性能(néng),以免除編譯開(kāi)銷。
28、盡量做(zuò)緩存,可(kě)使用(yòng)memcached。memcached是(shì)一(yī)款高(gāo)性能(nén≠g)的(de)內(nèi)存對(duì)象緩存系統,可(kě)用(yòng)來(lái)加速動态Web應用β(yòng)程序,減輕數(shù)據庫負載。對(duì)運算(suàn)碼 (OP code)的(de)緩存很(hěn)有(yǒu)<用(yòng),使得(de)腳本不(bù)必為(wèi)每個(gè)請(qǐng)求做(zuò)重新編譯。
29、當操作(zuò)字符串并需要(yào)檢驗其長(cháng)度是(shì)否滿足某種要(yào)求時(shí),你(nǐ)想當然地(dì)會(huì)使用(yòng)strlen✘()函數(shù)。此函數(shù)執行(xíng)起來(lái)相(xiàng)當快(kuài),因為(wèi)它不(bù)做(zuò)任何計(✔jì)算(suàn),隻返回在zval 結構(C的(de)內(nèi)置數(shù)據結構,用(yòng)于存儲PHP變量)¶中存儲的(de)已知(zhī)字符串長(cháng)度。但(dàn)是(shì),由于strlen()是(shì)函數₹(shù),多(duō)多(duō)少(shǎo)少(shǎo)會(huì)有(yǒu)些(xiē)慢(màn),因為(wèi)函數(shù)調用(yòng)會(huì)經過諸多(duō)步驟,如(rú)字母小(xiǎo)寫化(huà)(譯注:指函數(shù)名小(xiǎo)寫化(huà),PHP不(bù)區(qū)分(fēn)函數(shù)≈名大(dà)小(xiǎo)寫)、哈希查找,會(huì)跟随被調用(yòng)的(de)函數(shù)一(yī)起執行(xíng)。在某些(xi↑ē)情況下(xià),你(nǐ)可(kě)以使用(yòng)isset() 技(jì)巧加速執行(xíng)你(nǐ)的(de)代碼。
(舉例如(rú)下(xià))
if (strlen($foo) < 5) { echo “Foo is too short”$$ }¥
(與下(xià)面的(de)技(jì)巧做(zuò)比較)
if (!isset($foo{5})) { echo “Foo is too short”$$ }
調用(yòng)isset()恰巧比strlen()快(kuài),因為(wèi)與後者不(bù)同的(de)是(shì),isset()作(zuò)為(wèi)一(yī)>種語言結構,意味著(zhe)它的(de)執行(xíng)不(bù)需要(yào)函數(shù)查找和≥(hé)字母小(xiǎo)寫化(huà)。也(yě)就(jiù)是(shì)說(shuō),實際上(shàng)在檢驗字符串長(cháng)度的(de)頂層代碼中你(nǐ)沒有(yǒ€u)花(huā)太多(duō)開(kāi)銷。
34、當執行(xíng)變量$i的(de)遞增或遞減時(shí),$i++會(huì)比++$i慢(màn)一(yī)些(xiē)。這(zhè)種差異是(shì)PHP>特有(yǒu)的(de),并不(bù)适用(yòng)于其他(tā)語言,所以請(qǐng)不(bù)要(yào)修改你(nǐ)的(de)C或Java代碼并指✘望它們能(néng)立即變快(kuài),沒用(yòng)的(de)。++$i更快(kuài)是(shì)因為(wèi)它隻需要(yào)3條指令(♣opcodes),$i++則需要(yào)4條指令。後置遞增實際上(shàng)會(huì)産生(shēng)一(yī)個(gè)臨時(shí)變量,這(zhè)個(gè)臨時"(shí)變量随後被遞增。而前置遞增直接在原值上(shàng)遞增。這(zhè)是(shì)最優化(huà)處理(lǐ)的(de)一(yī)種,正如(rú)Zend的(de)PHP優化 (huà)器(qì)所作(zuò)的(de)那(nà)樣。牢記這(zhè)個(gè)優化(huà)處理(lǐ)不(bù)失為(wèi)★一(yī)個(gè)好(hǎo)主意,因為(wèi)并不(bù)是(shì)所有(yǒu)的(de)指令優化(huà)器(qì)都(>dōu)會(huì)做(zuò)同樣的(de)優化(huà)處理(lǐ),并且存在大(dà)量沒有(yǒu)裝配指令★優化(huà)器(qì)的(de)互聯網服務提供商(ISPs)和(hé)服務器(qì)。
35、并不(bù)是(shì)事(shì)必面向對(duì)象(OOP),面向對(duì)象往往開(kāi)銷很(hěn)大(dà),每個( gè)方法和(hé)對(duì)象調用(yòng)都(dōu)會(huì)消耗很(hěn)多(duō)內(nèiφ)存。
36、并非要(yào)用(yòng)類實現(xiàn)所有(yǒu)的(de)數(shù)據結構,數(shù)組也(yě)很(hěn)有(yǒu)用(yòng)。
37、不(bù)要(yào)把方法細分(fēn)得(de)過多(duō),仔細想想你(nǐ)真正打算(suàn)重用(yòng)的(de)是(shì)哪些(xiē)代碼?
38、當你(nǐ)需要(yào)時(shí),你(nǐ)總能(néng)把代碼分(fēn)解成方法。
39、盡量采用(yòng)大(dà)量的(de)PHP內(nèi)置函數(shù)。
40、如(rú)果在代碼中存在大(dà)量耗時(shí)的(de)函數(shù),你(nǐ)可(kě)以✘考慮用(yòng)C擴展的(de)方式實現(xiàn)它們。
41、評估檢驗(profile)你(nǐ)的(de)代碼。檢驗器(qì)會(huì)告訴你(nǐ),代碼的(de)哪些(xiē)部分(fēn)消耗了(le)多(duō)少(shǎo)時(s♠hí)間(jiān)。Xdebug調試器(qì)包含了(le)檢驗程序,評估檢驗總體(tǐ)上(shà★ng)可(kě)以顯示出代碼的(de)瓶頸。
42、mod_zip可(kě)作(zuò)為(wèi)Apache模塊,用(yòng)來(lái)即時(shí)壓縮你(nǐ)的(de)數(shù)¥據,并可(kě)讓數(shù)據傳輸量降低(dī)80%。
43、在可(kě)以用(yòng)file_get_contents替代file、fopen、feof、fgets等系列方法的(de)情況 下(xià),盡量用(yòng)file_get_contents,因為(wèi)他(tā)的(de)效率高(gāo)得(de)多(duō)!但(dàn)↓是(shì)要(yào)注意file_get_contents在打開(kāi)一(yī)個(gè)URL文(wén)件(jiàn)時(shí)候的(de)PαHP版本問(wèn)題;
44、盡量的(de)少(shǎo)進行(xíng)文(wén)件(jiàn)操作(zuò),雖然PHP的(de)文(wén)件(jiàn)操作(zuò)效率也(yě)不(b×ù)低(dī)的(de);
45、優化(huà)Select SQL語句,在可(kě)能(néng)的(de)情況下(xià)盡量少(shǎo)的(de)進行(xíng)Insert、Update操作(zuò)(在upd∞ate上(shàng),我被惡批過);
46、盡可(kě)能(néng)的(de)使用(yòng)PHP內(nèi)部函數(shù)(但(dàn)™是(shì)我卻為(wèi)了(le)找個(gè)PHP裡(lǐ)面不(bù)存在的(de)函數(shù),浪費(fèi)了(le)本可(kě)以寫出一(yī) 個(gè)自(zì)定義函數(shù)的(de)時(shí)間(jiān),經驗問(wèn)題啊!);φ
47、循環內(nèi)部不(bù)要(yào)聲明(míng)變量,尤其是(shì)大(dà)變量:對(duì)象(這(zhè)好(hǎo)像不(bù)隻是(≥shì)PHP裡(lǐ)面要(yào)注意的(de)問(wèn)題吧(ba)?);
48、多(duō)維數(shù)組盡量不(bù)要(yào)循環嵌套賦值;
49、在可(kě)以用(yòng)PHP內(nèi)部字符串操作(zuò)函數(shù)的(de)情況下(xià),不(bù)要(yào)用(yòng)正則表達式;
50、foreach效率更高(gāo),盡量用(yòng)foreach代替while和(hé)for循環;
51、用(yòng)單引号替代雙引号引用(yòng)字符串;
52、“用(yòng)i+=1代替i=i+1。符合c/c++的(de)習(xí)慣,效率還(hái)高(gāo)”; $;
53、對(duì)global變量,應該用(yòng)完就(jiù)unset()掉;
PHP的(de)簡單介紹
PHP相(xiàng)較與其他(tā)的(de)編程語言,将程序嵌入到(dào)HTML(标準通(tōng)用(αyòng)标記語言下(xià)的(de)一(yī)個(gè)應用(yòng))文(wén)檔中去(qù)執行(xíng),執行(xíng)效率比完全生(shēng)成HTML标λ記的(de)CGI要(yào)高(gāo)很(hěn)多(duō);還(hái)可(kě)以執行(xíng)編譯後代碼,編譯可(kě)以達到(dào)加密和(hé)優化(huà)代碼運行(xíng)、使代碼運行(xíng)更快(kuài)的(de)效果。
PHP外(wài)貿網站(zhàn)建設提高(gāo)效率的(de)53個(gè)要(yào)點
提高(gāo)PHP編程效率的(de)53個(gè)要(yào)點
用(yòng)單引号代替雙引号來(lái)包含字符串,這(zhè)樣做(zuò)會(huì)更快(kuài)一(yī)些(xiē)。因為(wèi)PHP會(huì)在雙引号包圍的(≤de)字符串中搜尋變量,單引号則不(bù)會(huì),注意:隻有(yǒu)echo能(néng)這(zΩhè)麽做(zuò),它是(shì)一(yī)種可(kě)以把多(duō)個(gè)字符串當作(zuò)參數(shù)的(d e)“函數(shù)”(譯注:PHP手冊中說(shuō)echo是(shì)語言結構,不(bù)是(shì)真正的(de)函數÷(shù),故把函數(shù)加上(shàng)了(le)雙引号)。
1、如(rú)果能(néng)将類的(de)方法定義成static,就(jiù)盡量定義成static,它的(de)速度會(huì)提升将近(jìn)4倍。
2、$row['id'] 的(de)速度是(shì)$row[id]的(de)7倍。
3、echo 比 print 快(kuài),并且使用(yòng)echo的(de)多(duō)重參數(shù)(譯注:指用(&yòng)逗号而不(bù)是(shì)句點)代替字符串連接,比如(rú)echo $str1,$str2。
4、在執行(xíng)for循環之前确定最大(dà)循環數(shù),不(bù)要(yào)每循環一(yī)次都(dōu)計(jì)算(suàn)'最大(dà)值,最好(hǎo)運用(yòng)foreach代替。
5、注銷那(nà)些(xiē)不(bù)用(yòng)的(de)變量尤其是(shì)大(dà)數(shù)組,以便釋放(fàng)內(nèi)存。
6、盡量避免使用(yòng)__get,__set,__autoload。
7、require_once()代價昂貴。
8、include文(wén)件(jiàn)時(shí)盡量使用(yòng)絕對(duì)路(lù)徑,因為(wèi)它避免了(le)PHP去(qù)include_path裡(lǐ)查找文(wénα)件(jiàn)的(de)速度,解析操作(zuò)系統路(lù)徑所需的(de)時(shí)間(jiān)會(huì)更少(shǎo)。
9、如(rú)果你(nǐ)想知(zhī)道(dào)腳本開(kāi)始執行(xíng)(譯注:即服務器(qì)端收到(dào)客戶端請( qǐng)求)的(de)時(shí)刻,使用(yòng)$_SERVER[‘REQUEST_TIME']要(yào)好(hǎo)于time() 。
10、函數(shù)代替正則表達式完成相(xiàng)同功能(néng)。
11、str_replace函數(shù)比preg_replace函數(shù)快(kuài),但(dàn)s®trtr函數(shù)的(de)效率是(shì)str_replace函數(shù)的(de)四倍。
12、如(rú)果一(yī)個(gè)字符串替換函數(shù),可(kě)接受數(shù)組或字符作(zuò)為≈(wèi)參數(shù),并且參數(shù)長(cháng)度不(bù)太長(cháng),那(nà)麽可(kě)以考慮額外(w★ài)寫一(yī)段替換代碼,使得(de)每次傳遞參數(shù)是(shì)一(yī)個(gè)字符,而不(bù)是(shì)隻寫一(yī)★行(xíng)代碼接受數(shù)組作(zuò)為(wèi)查詢和(hé)替換的(de)參數(shù)。
13、使用(yòng)選擇分(fēn)支語句(譯注:即switch case)好(hǎo)于使用(yòng)多(duō)個(gè)if,else iπf語句。
14、用(yòng)@屏蔽錯(cuò)誤消息的(de)做(zuò)法非常低(dī)效,極其低(dī)效。
15、打開(kāi)apache的(de)mod_deflate模塊,可(kě)以提高(gāo)網頁的(de)浏覽速度。
16、數(shù)據庫連接當使用(yòng)完畢時(shí)應關掉,不(bù)要(yào)用(yòng)長(cháng)連接。&≈nbsp;
17、錯(cuò)誤消息代價昂貴。
18、在方法中遞增局部變量,速度是(shì)最快(kuài)的(de)。幾乎與在函數(shù)中調用(yòng)局部變量的(deβ)速度相(xiàng)當。
19、遞增一(yī)個(gè)全局變量要(yào)比遞增一(yī)個(gè)局部變量慢(màn)2倍。
20、遞增一(yī)個(gè)對(duì)象屬性(如(rú):$this->prop++)要(yào)比遞增一(yī)個(gè)局部變量慢(màn)✘3倍。
21、遞增一(yī)個(gè)未預定義的(de)局部變量要(yào)比遞增一(yī)個(gè)預定義的(de)≥局部變量慢(màn)9至10倍。
22、僅定義一(yī)個(gè)局部變量而沒在函數(shù)中調用(yòng)它,同樣會(huì)減慢(màn)速度(其程度相(xiàng)當于遞增一(yī)個(πgè)局部變量)。PHP大(dà)概會(huì)檢查看(kàn)是(shì)否存在全局變量。
23、方法調用(yòng)看(kàn)來(lái)與類中定義的(de)方法的(de)數(shù)量無關,因為(wèi)我(在測試方法之前和★(hé)之後都(dōu))添加了(le)10個(gè)方法,但(dàn)性能(néng)上(shàng)沒有(yǒu)變化(huà)。
24、派生(shēng)類中的(de)方法運行(xíng)起來(lái)要(yào)快(kuài)于在基類中定義的(de)同樣的(de)方法。
25、調用(yòng)帶有(yǒu)一(yī)個(gè)參數(shù)的(de)空(kōng)函數(shù),其花(hu§ā)費(fèi)的(de)時(shí)間(jiān)相(xiàng)當于執行(xíng)7至8次的(de)局部變量遞增操作(zuò)。類似的(de)方 法調用(yòng)所花(huā)費(fèi)的(de)時(shí)間(jiān)接近(jìn)于15次的(de)局部變量遞增操作(zuò)。
26、Apache解析一(yī)個(gè)PHP腳本的(de)時(shí)間(jiān)要(yào)比解析一(yī)個(gè)靜(jìng)态HTML頁面慢(màn) 2至10倍。盡量多(duō)用(yòng)靜(jìng)态HTML頁面,少(shǎo)用(yòng)腳本。
27、除非腳本可(kě)以緩存,否則每次調用(yòng)時(shí)都(dōu)會(huì)重新編譯一(yī)次。引入一(yī)套PHP緩存機(jī)制(zhì)通(tō∞ng)常可(kě)以提升25%至100%的(de)性能(néng),以免除編譯開(kāi)銷。
28、盡量做(zuò)緩存,可(kě)使用(yòng)memcached。memcached是(shì)一(yī)款高(gāo)性能(nén≠g)的(de)內(nèi)存對(duì)象緩存系統,可(kě)用(yòng)來(lái)加速動态Web應用β(yòng)程序,減輕數(shù)據庫負載。對(duì)運算(suàn)碼 (OP code)的(de)緩存很(hěn)有(yǒu)<用(yòng),使得(de)腳本不(bù)必為(wèi)每個(gè)請(qǐng)求做(zuò)重新編譯。
29、當操作(zuò)字符串并需要(yào)檢驗其長(cháng)度是(shì)否滿足某種要(yào)求時(shí),你(nǐ)想當然地(dì)會(huì)使用(yòng)strlen✘()函數(shù)。此函數(shù)執行(xíng)起來(lái)相(xiàng)當快(kuài),因為(wèi)它不(bù)做(zuò)任何計(✔jì)算(suàn),隻返回在zval 結構(C的(de)內(nèi)置數(shù)據結構,用(yòng)于存儲PHP變量)¶中存儲的(de)已知(zhī)字符串長(cháng)度。但(dàn)是(shì),由于strlen()是(shì)函數₹(shù),多(duō)多(duō)少(shǎo)少(shǎo)會(huì)有(yǒu)些(xiē)慢(màn),因為(wèi)函數(shù)調用(yòng)會(huì)經過諸多(duō)步驟,如(rú)字母小(xiǎo)寫化(huà)(譯注:指函數(shù)名小(xiǎo)寫化(huà),PHP不(bù)區(qū)分(fēn)函數(shù)≈名大(dà)小(xiǎo)寫)、哈希查找,會(huì)跟随被調用(yòng)的(de)函數(shù)一(yī)起執行(xíng)。在某些(xi↑ē)情況下(xià),你(nǐ)可(kě)以使用(yòng)isset() 技(jì)巧加速執行(xíng)你(nǐ)的(de)代碼。
(舉例如(rú)下(xià))
if (strlen($foo) < 5) { echo “Foo is too short”$$ }¥
(與下(xià)面的(de)技(jì)巧做(zuò)比較)
if (!isset($foo{5})) { echo “Foo is too short”$$ }
調用(yòng)isset()恰巧比strlen()快(kuài),因為(wèi)與後者不(bù)同的(de)是(shì),isset()作(zuò)為(wèi)一(yī)>種語言結構,意味著(zhe)它的(de)執行(xíng)不(bù)需要(yào)函數(shù)查找和≥(hé)字母小(xiǎo)寫化(huà)。也(yě)就(jiù)是(shì)說(shuō),實際上(shàng)在檢驗字符串長(cháng)度的(de)頂層代碼中你(nǐ)沒有(yǒ€u)花(huā)太多(duō)開(kāi)銷。
34、當執行(xíng)變量$i的(de)遞增或遞減時(shí),$i++會(huì)比++$i慢(màn)一(yī)些(xiē)。這(zhè)種差異是(shì)PHP>特有(yǒu)的(de),并不(bù)适用(yòng)于其他(tā)語言,所以請(qǐng)不(bù)要(yào)修改你(nǐ)的(de)C或Java代碼并指✘望它們能(néng)立即變快(kuài),沒用(yòng)的(de)。++$i更快(kuài)是(shì)因為(wèi)它隻需要(yào)3條指令(♣opcodes),$i++則需要(yào)4條指令。後置遞增實際上(shàng)會(huì)産生(shēng)一(yī)個(gè)臨時(shí)變量,這(zhè)個(gè)臨時"(shí)變量随後被遞增。而前置遞增直接在原值上(shàng)遞增。這(zhè)是(shì)最優化(huà)處理(lǐ)的(de)一(yī)種,正如(rú)Zend的(de)PHP優化 (huà)器(qì)所作(zuò)的(de)那(nà)樣。牢記這(zhè)個(gè)優化(huà)處理(lǐ)不(bù)失為(wèi)★一(yī)個(gè)好(hǎo)主意,因為(wèi)并不(bù)是(shì)所有(yǒu)的(de)指令優化(huà)器(qì)都(>dōu)會(huì)做(zuò)同樣的(de)優化(huà)處理(lǐ),并且存在大(dà)量沒有(yǒu)裝配指令★優化(huà)器(qì)的(de)互聯網服務提供商(ISPs)和(hé)服務器(qì)。
35、并不(bù)是(shì)事(shì)必面向對(duì)象(OOP),面向對(duì)象往往開(kāi)銷很(hěn)大(dà),每個( gè)方法和(hé)對(duì)象調用(yòng)都(dōu)會(huì)消耗很(hěn)多(duō)內(nèiφ)存。
36、并非要(yào)用(yòng)類實現(xiàn)所有(yǒu)的(de)數(shù)據結構,數(shù)組也(yě)很(hěn)有(yǒu)用(yòng)。
37、不(bù)要(yào)把方法細分(fēn)得(de)過多(duō),仔細想想你(nǐ)真正打算(suàn)重用(yòng)的(de)是(shì)哪些(xiē)代碼?
38、當你(nǐ)需要(yào)時(shí),你(nǐ)總能(néng)把代碼分(fēn)解成方法。
39、盡量采用(yòng)大(dà)量的(de)PHP內(nèi)置函數(shù)。
40、如(rú)果在代碼中存在大(dà)量耗時(shí)的(de)函數(shù),你(nǐ)可(kě)以✘考慮用(yòng)C擴展的(de)方式實現(xiàn)它們。
41、評估檢驗(profile)你(nǐ)的(de)代碼。檢驗器(qì)會(huì)告訴你(nǐ),代碼的(de)哪些(xiē)部分(fēn)消耗了(le)多(duō)少(shǎo)時(s♠hí)間(jiān)。Xdebug調試器(qì)包含了(le)檢驗程序,評估檢驗總體(tǐ)上(shà★ng)可(kě)以顯示出代碼的(de)瓶頸。
42、mod_zip可(kě)作(zuò)為(wèi)Apache模塊,用(yòng)來(lái)即時(shí)壓縮你(nǐ)的(de)數(shù)¥據,并可(kě)讓數(shù)據傳輸量降低(dī)80%。
43、在可(kě)以用(yòng)file_get_contents替代file、fopen、feof、fgets等系列方法的(de)情況 下(xià),盡量用(yòng)file_get_contents,因為(wèi)他(tā)的(de)效率高(gāo)得(de)多(duō)!但(dàn)↓是(shì)要(yào)注意file_get_contents在打開(kāi)一(yī)個(gè)URL文(wén)件(jiàn)時(shí)候的(de)PαHP版本問(wèn)題;
44、盡量的(de)少(shǎo)進行(xíng)文(wén)件(jiàn)操作(zuò),雖然PHP的(de)文(wén)件(jiàn)操作(zuò)效率也(yě)不(b×ù)低(dī)的(de);
45、優化(huà)Select SQL語句,在可(kě)能(néng)的(de)情況下(xià)盡量少(shǎo)的(de)進行(xíng)Insert、Update操作(zuò)(在upd∞ate上(shàng),我被惡批過);
46、盡可(kě)能(néng)的(de)使用(yòng)PHP內(nèi)部函數(shù)(但(dàn)™是(shì)我卻為(wèi)了(le)找個(gè)PHP裡(lǐ)面不(bù)存在的(de)函數(shù),浪費(fèi)了(le)本可(kě)以寫出一(yī) 個(gè)自(zì)定義函數(shù)的(de)時(shí)間(jiān),經驗問(wèn)題啊!);φ
47、循環內(nèi)部不(bù)要(yào)聲明(míng)變量,尤其是(shì)大(dà)變量:對(duì)象(這(zhè)好(hǎo)像不(bù)隻是(≥shì)PHP裡(lǐ)面要(yào)注意的(de)問(wèn)題吧(ba)?);
48、多(duō)維數(shù)組盡量不(bù)要(yào)循環嵌套賦值;
49、在可(kě)以用(yòng)PHP內(nèi)部字符串操作(zuò)函數(shù)的(de)情況下(xià),不(bù)要(yào)用(yòng)正則表達式;
50、foreach效率更高(gāo),盡量用(yòng)foreach代替while和(hé)for循環;
51、用(yòng)單引号替代雙引号引用(yòng)字符串;
52、“用(yòng)i+=1代替i=i+1。符合c/c++的(de)習(xí)慣,效率還(hái)高(gāo)”; $;
53、對(duì)global變量,應該用(yòng)完就(jiù)unset()掉;
本站(zhàn)文(wén)章(zhāng)均為(wèi)及客網站(zhàn)建設摘自(zì)權威資料,書(shū)籍,或網絡原創文(wén)章(zhāng),如(rú)有(yǒu)版權糾紛或者違規問(wèn)題,請(qǐng)即刻聯系我們删除,我們歡迎您∞分(fēn)享,引用(yòng)和(hé)轉載,我們謝(xiè)絕直接複制(zhì)和(hé)抄襲!感謝(xiè)..↔.
猜你(nǐ)喜歡
- 1網站(zhàn)建設中,如(rú)何優化(huà)視(shì)覺效果?
- 2網絡營銷的(de)優點是(shì)什(shén)麽?
- 3營銷型網站(zhàn)建設該如(rú)何提升用(yòng)戶對(duì)網站(zhàn)的(de)信任度?
- 4營銷型網站(zhàn)建設的(de)服務器(qì)如(rú)何選擇?
- 5網站(zhàn)改版需要(yào)注意的(de)六大(dà)SEO細節
- 6企業(yè)網站(zhàn)移動端的(de)SEO優化(huà)技(jì)巧
- 7PHP網站(zhàn)建設提高(gāo)效率的(de)53個(gè)要(yào)點
- 8您的(de)外(wài)貿網站(zhàn)設計(jì)是(shì)否專業(yè)?四點可(kě)以證明(míng)
- 9企業(yè)網站(zhàn)建設的(de)所有(yǒu)權問(wèn)題分(fēn)析
- 10企業(yè)網站(zhàn)建設之域名相(xiàng)關問(wèn)題的(de)總結