程序的優(yōu)化(PHP)

php程序優(yōu)化.png

????有些小細節(jié)往往容易被人忽視蒜危。有時候常常說優(yōu)化代碼優(yōu)化代碼她君,但是實際操作的時候,最容易被忽視的如下所示:

  1. echo 比 print 快放椰。

  2. 使用echo的多重參數(shù)代替字符串連接。

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

  4. 對global變量衣厘,應該用完就unset()掉如蚜。

  5. 用單引號代替雙引號來包含字符串,這樣做會更快一些影暴。因為PHP會在雙引號包圍的字符串中搜尋變量错邦,單引號則不會。

  6. 函數(shù)代替正則表達式完成相同功能型宙。

  7. 當執(zhí)行變量$i的遞增或遞減時撬呢,$i++會比++$i慢一些。這種差異是PHP特有的妆兑,并不適用于其他語言魂拦,++$i更快是因為它只需要3條指令(opcodes),$i++則需要4條指令搁嗓。后置遞增實際上會產(chǎn)生一個臨時變量晨另,這個臨時變量隨后被遞增。而前置遞增直接在原值上遞增谱姓。

  8. 使用選擇分支語句(switch case)好于使用多個if借尿,else if語句。

  9. 利用var_dump進行PHP代碼調試。如果你在尋找php調試技術路翻,我必須說var_dump應該是你要找的目標狈癞,在顯示php信息方面這個命令可以滿足你的所有需要,而調試代碼的多數(shù)情況與得到PHP中的數(shù)值有關茂契。

  10. 在包含文件時使用完整路徑蝶桶,解析操作系統(tǒng)路徑所需的時間會更少。

  11. 動輒創(chuàng)建全局數(shù)值是一種糟糕的做法掉冶,不過有時候實際情況的確又需要這么做真竖。對于數(shù)據(jù)庫表或數(shù)據(jù)庫連接信息使用全局數(shù)值是一個不錯的想法,但不要在你的PHP代碼中頻繁使用全局數(shù)值厌小。另外恢共,更好的一種做法是把你的全局變量存放在一個config.php文件中。

  12. 如果你想知道腳本開始執(zhí)行的時刻璧亚,使用$_SERVER[‘REQUEST_TIME’]要好于time()讨韭。

  13. 打開apache的mod_deflate模塊。

  14. 用@屏蔽錯誤消息的做法非常低效癣蟋。

  15. 盡量采用大量的PHP內置函數(shù)透硝。

  16. 遞增一個未預定義的局部變量要比遞增一個預定義的局部變量慢9至10倍。

  17. 派生類中的方法運行起來要快于在基類中定義的同樣的方法疯搅。

  18. 僅定義一個局部變量而沒在函數(shù)中調用它濒生,同樣會減慢速度(其程度相當于遞增一個局部變量)

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

  20. 正如之前提到的,任何php網(wǎng)站中最重要的部分有99%的可能是數(shù)據(jù)庫琐馆。因此,你需要非常熟悉如何正確的使用sql恒序,學會關聯(lián)表和更多高級的數(shù)據(jù)庫技術瘦麸。

  21. 調用帶有一個參數(shù)的空函數(shù),其花費的時間相當于執(zhí)行7至8次的局部變量遞增操作歧胁。

  22. 當操作字符串并需要檢驗其長度是否滿足某種要求時滋饲,你想當然地會使用strlen()函數(shù)。此函數(shù)執(zhí)行起來相當快喊巍,因為它不做任何計算屠缭,只返回zval 結構(C的內置數(shù)據(jù)結構,用于存儲PHP變量)中存儲的已知字符串長度崭参。

  23. 并不是所有情況都必須使用面向對象開發(fā)呵曹,面向對象往往開銷很大,每個方法和對象調用都會消耗很多內存。

  24. 除非腳本可以緩存奄喂,否則每次調用時都會重新編譯一次铐殃。引入一套PHP緩存機制通常可以提升25%至100%的性能跨新,以免除編譯開銷富腊。

最后再提醒一下在代碼優(yōu)化的時候應該注意的事情:

  1. 短代碼不等于快的代碼
    很多人在寫程序時希望將代碼寫的越簡潔越好,但是越短的代碼有時候反而需要更長的執(zhí)行時間域帐。

  2. 在寫程序的時候更應該注重程序的擴展性赘被,而不是追求速度。

  3. 在優(yōu)化你的代碼之前肖揣,先看看跟數(shù)據(jù)庫有關的部分民假,因為大多數(shù)應用程序的瓶頸在數(shù)據(jù)庫而不是代碼。

  4. 微優(yōu)化得不償失
    什么叫做微優(yōu)化许饿?就像前面所說的將正則表達式部分的代碼改用字符串函數(shù)代替阳欲。這樣做有以下缺點:
    (1)花費時間較長
    (2)不會根本上解決性能問題
    (3)很有可能會破壞以前的代碼從而產(chǎn)生未知的錯誤
    (4)付出大于回報

    ????這里還不得不提到一個誤區(qū),有些人為了讓程序更加優(yōu)化陋率,在分析業(yè)務邏輯的時候便將優(yōu)化考慮在內了球化,從而為了得到更優(yōu)的代碼而改動業(yè)務邏輯。這是十分愚蠢的想法瓦糟,因為程序的目的便是為了處理現(xiàn)實中遇到的問題筒愚,我們不能本末倒置。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末菩浙,一起剝皮案震驚了整個濱河市巢掺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劲蜻,老刑警劉巖陆淀,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異先嬉,居然都是意外死亡轧苫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門疫蔓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來含懊,“玉大人停忿,你說我怎么就攤上這事范抓。” “怎么了咖熟?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵滚躯,是天一觀的道長雏门。 經(jīng)常有香客問我嘿歌,道長,這世上最難降的妖魔是什么剿配? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任搅幅,我火速辦了婚禮,結果婚禮上呼胚,老公的妹妹穿的比我還像新娘茄唐。我一直安慰自己,他們只是感情好蝇更,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布沪编。 她就那樣靜靜地躺著,像睡著了一般年扩。 火紅的嫁衣襯著肌膚如雪蚁廓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天厨幻,我揣著相機與錄音相嵌,去河邊找鬼。 笑死况脆,一個胖子當著我的面吹牛饭宾,可吹牛的內容都是我干的。 我是一名探鬼主播格了,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼看铆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盛末?” 一聲冷哼從身側響起弹惦,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悄但,沒想到半個月后棠隐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡檐嚣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年助泽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片净嘀。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侠讯,靈堂內的尸體忽然破棺而出挖藏,到底是詐尸還是另有隱情,我是刑警寧澤厢漩,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布膜眠,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏宵膨。R本人自食惡果不足惜架谎,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辟躏。 院中可真熱鬧谷扣,春花似錦、人聲如沸捎琐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑞凑。三九已至末秃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間籽御,已是汗流浹背练慕。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留技掏,地道東北人铃将。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像零截,于是被迫代替她去往敵國和親麸塞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容