近日打算做一高效能聊天伺服器,不知道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很高大上的說法。。我也只能呵呵了 別出來裝逼了好嗎??