數字說話,震驚:TP架構,php,html,php靜態頁執行效率分析和對比

來源:互聯網
上載者:User
近日打算做一高效能聊天伺服器,不知道Thinkphp3.2效率如何?也就是架構效率到底如何?於是測試下。
任務:從資料庫讀取44條資料。
1、Tp3.2 home->controler->IndexControler->index()
$m=M('login_log');
$login_log_list=$m->select();
$this->assign('login_log_list',$login_log_list);
$this->display('index');
模板:index.html:用標籤 顯示。

2、test2.php(核心代碼:)
$result=mysql_query('select * from login_log');
while ($item=mysql_fetch_assoc($result))
3、test2.html:就是test2.php的輸出結果。
4、test1.php:就是test2.html的尾碼變為php,其它什麼都不變。

採用工具:ab.exe 執行1000個串連,100並發。電腦:華碩筆記本cpu:u3400 6G記憶體。Win7。程式全部在本地執行。
結果如下:

結果:http://chenrenqi.blog.sohu.com/303865454.html
圖表這兒不支援,請見上面串連。

由此可見:原生PHP串連資料庫,是TP3.2的11倍。時間主要耗費在檔案載入和類的建立,及模板解析上了。
而靜態檔案是php串連資料庫檔案的21倍左右。是改尾碼後的php的4倍左右。
要知道,實際工作中,一個php檔案。也就是一個http串連,可能需要多個資料庫連接,實際HTML的速度可能要比php快30倍以上,是非常正常的。


回複討論(解決方案)

90%的企業網站,內部OA,並發訪問量不大。所以用TP還是不錯的。如果對效能要求有很大。可以採用其它的。

又在炒現飯了?
總所周知,架構帶來的是開發上的高效率。就是架構的作者也從不諱言運行效率較低
php 尾碼必然要啟動一個php解析器的進(線)程,任何代碼的執行都是要花費時間的
把 html 尾碼改成 php 尾碼也是如此,只有在php解析器分析完整個文檔並確認沒有任何php文法成分後才會原樣輸出

C 語言編譯後的機器指令要比組合語言的多出30%。但即便是在當時資源昂貴的情況下,程式員們還是選擇了 C 語言。
這是為什麼呢?原因就在於 C 語言就像他的名字一樣簡單明了

高效能聊天伺服器。。。。你這個資料不能說明任何問題。

覺得TP不好可以選擇C或者JAVA,就像你會英語,我非得讓你說法語,你會嗎?

追求?行效率的,可以用C?成php?展?用。或者你的架構就是C?的一?php?展。

回過你那個文章··就說了··架構的東西 要執行個體化一大堆無用的東西,而只是實現一個很小的功能,MVC的架構·每次重新整理頁面都要去從頭到尾執行個體化一遍,所以···追求高效能···傳統的過程寫法也許更爽快···至於開發效率和維護問題··就是樓主要考慮的了··

又在炒現飯了?
總所周知,架構帶來的是開發上的高效率。就是架構的作者也從不諱言運行效率較低
php 尾碼必然要啟動一個php解析器的進(線)程,任何代碼的執行都是要花費時間的
把 html 尾碼改成 php 尾碼也是如此,只有在php解析器分析完整個文檔並確認沒有任何php文法成分後才會原樣輸出

C 語言編譯後的機器指令要比組合語言的多出30%。但即便是在當時資源昂貴的情況下,程式員們還是選擇了 C 語言。
這是為什麼呢?原因就在於 C 語言就像他的名字一樣簡單明了



你懂不表達大家都懂。懂效能之後,潛意思就知道如何編程來最佳化了。

覺得TP不好可以選擇C或者JAVA,就像你會英語,我非得讓你說法語,你會嗎?


慢不一定不好。邏輯有問題。就好像我說某人長得漂亮,不代表他很有能力。

感謝分享,不過,這隻要稍微有點常識的PHP開發人員都懂,更不要說要開發高效能應用的人了。

我覺得這種測試並不公平啊,為架構布置好一套成熟的緩衝機制呢?
而且TP的時間都花在哪裡了?磁碟IO?執行個體化對象寫記憶體?模板渲染正則匹配?
這些都可以通過緩衝搞定的啊

哈哈,樓主發我覺得就是分享精神,噴子死!支援樓主

這應該是架構的一個通病吧。

99%人覺得效能瓶頸在資料庫,測試結果顯示,效能瓶頸在資料庫,是的,但我們很難改變。我們可以改變的部分千萬不要忽視,除了資料庫外,其它部分程式瓶頸也會存在。而且相差極大!

還有一點就是,既然知道架構效能極差,為什麼不改觀呢?

本人現在新做一款架構,目標:極簡單,極強大,極快速,極傻瓜。
打算將大家都忽視的前端

讓我們享受極快速開發的同時,也能享受極速度。
初步目標:是原生php的一半的速度(不知道是否能做到,這是目標)。

我覺得這種測試並不公平啊,為架構布置好一套成熟的緩衝機制呢?
而且TP的時間都花在哪裡了?磁碟IO?執行個體化對象寫記憶體?模板渲染正則匹配?
這些都可以通過緩衝搞定的啊


你幸福啥,兄弟!^_^
一套成熟的緩衝機制呢??都是多次測試,沒有見緩衝有多大效果。


我覺得這種測試並不公平啊,為架構布置好一套成熟的緩衝機制呢?
而且TP的時間都花在哪裡了?磁碟IO?執行個體化對象寫記憶體?模板渲染正則匹配?
這些都可以通過緩衝搞定的啊



我也原以為緩衝有多大作用,測試結果發現,緩衝沒有多大效果。

緩衝只有在高並發才會顯出優勢。
平常小網站,不需要做什麼緩衝。

同樣邏輯下,原生碼的速度要比架構快得多。這是因為架構要載入太多東西。

比如一個簡單頁面,原生碼直接解析輸出,只需要一次請求。但架構往往把這個頁面分成十幾個小部分,光請求就要多出十幾倍。

一個真正的程式員,都應該寫原生。

之所以會有架構,是因為架構能大幅推進開發速度。快速建成項目。

不過我看也未必如此,有些網站,和架構邏輯不一致的,用原生更快。

比如TP,為論壇而生,如果我想做個門戶頁,需要完成類似新浪的首頁效果。

這時候,用TP可以累死你。

那我就是那 1% 了
須知:資料庫並不特指基於檔案系統的SQL(即便是SQL,也有基於記憶體的表),還有基於記憶體的noSQL

架構本身並沒有什麼不好,架構是開發經驗的總結。
但為架構而架構就不好了

傳統的多入口架構,路由的指派是由 網頁伺服器完成的
而一些架構為了所謂的單入口效果,硬將本該 網頁伺服器完成的工作拿來自己去做。


這段話,怎麼就有非法片語了呢

這個測試沒有任何意義。。。。

感覺PHP越來越像個四不像了,效率甚至還不及Python

追求?行效率的,可以用C?成php?展?用。或者你的架構就是C?的一?php?展。


暫時還沒有這樣做,也許以後會這樣做。

這個表情看著看著自己也幸福了

我屬於那1%...效能瓶頸多半在MVC超多檔案部署的磁碟IO上,高並發下很難受,想辦法開啟opcode緩衝就解決了,這個測試結果也會有很大變化吧
我高度興趣16樓說的10幾個請求的單頁面到底屬於哪個架構...
另外架構只是提供開發模式和一些常用功能封裝,做論壇還是做新浪 這些商務邏輯有什麼區別嗎?或許我沒做過真的不理解,希望大俠們有時間可以科普下

原生php必然比架構快,但我們可以通過最佳化手段極大的減小這個差距
如果零點幾秒的頁面速度差距也比開發模式重要,大家都用彙編搞web吧~

雖然小弟經驗少,但也想反駁下xu大,緩衝並非不自信,而是將高頻率的重複工作消耗降到最低
一篇簡單的新聞,寫操作一輩子可能只有一次,但讀操作每分鐘都在進行,不需要每次讓伺服器軟體運行指令碼,再找資料庫要東西,直接靜態檔案速度快很多,好像靜態檔案照樣可以最佳化,原本硬碟??記憶體??網卡緩衝區的中間步驟也可以省略
一些篩選條件複雜的推薦新聞,更沒必要每次都讓資料庫計算的吧
當然過分的緩衝肯定是畫蛇添足


其實我是來轉圖的,高並發的東西,可以考慮換換其它語言。效率也是需要重視,但為效率而去噴就沒必要了。

是的,TP適合做論壇社區,資訊一些小型網站,不適合做大型網站,也從不奢望TP去做大項目

有時間還可以在測試下yii的效率如何

你就是那個閑著沒事做的那種!架構就是為了快速開發而生。

為了快速開發而生,不代錶速度快。這些基礎的研究不搞清楚,你再忙,也瞎忙。
我最近在研發一個高速架構。肯定比你忙。

你就是那個閑著沒事做的那種!架構就是為了快速開發而生。

我暈,在我看來架構除了提升開發效率;其餘對開發人員沒有任何好處;
用了一年架構連最基本的sql估計都不會寫;
更別提架構中的各種初始化,各種new了;

我暈,在我看來架構除了提升開發效率;其餘對開發人員沒有任何好處;
用了一年架構連最基本的sql估計都不會寫;
更別提架構中的各種初始化,各種new了;


原本你會就會,原本不會你就不會。

有時間還可以在測試下yii的效率如何


本打算用YII也測試下的,但前天學習了下,感覺YII作者水平實在太菜。就沒有必要測試了。
原本以為YII是高大上,瞭解後,才知道是?絲中的菜鳥。

一個真正的程式員,都應該寫原生。

之所以會有架構,是因為架構能大幅推進開發速度。快速建成項目。

不過我看也未必如此,有些網站,和架構邏輯不一致的,用原生更快。

比如TP,為論壇而生,如果我想做個門戶頁,需要完成類似新浪的首頁效果。

這時候,用TP可以累死你。


水平還極菜,在1年以內吧。多編程吧。會有進步的。

真是相當的震驚,一個10+年web開發經驗的人對於緩衝的理解竟然是這樣的。
看來這幾個文章純粹就是浪費我的時間,不在回複樓主。

真是相當的震驚,一個10+年web開發經驗的人對於緩衝的理解竟然是這樣的。
看來這幾個文章純粹就是浪費我的時間,不在回複樓主。


對了,哪裡看到有10+web經驗的人了?我最多3年而已。

架構也用過的,但是有的地方用的就是不方便,
例如:多條件查詢之後分頁怎麼繼續獲得搜尋條件,TP 就這裡就很麻煩,擷取多個資料得迴圈好幾次,還不一定能擷取到!

聊天室的話node.js可以考慮一下

請使用彙編,如果效率還不達標,可以使用二進位,如果還是慢,我也沒辦法了

頭一次聽到人說YII很爛,TP很高大上的說法。。我也只能呵呵了 別出來裝逼了好嗎??

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.