[請益] PHP效能改善的問題
不曉得颱風天的星期五,大家會不會比較有空回我問題...哈
話說最近小弟在寫演算法的程式,我採用IIS7+PHP5來寫,
一開始在跑小量的資料上是沒問題的,直到準備開始跑大量資料的時候
卻發現效能不彰的情況,後來我開始重新檢查我的程式碼,並且一步一步的
修正它,的確有明顯的改善執行時間(27X秒->197秒),但是還是在跑排列組合
大一點的資料的話,一樣會超過3600秒(為改善程式碼之前跑8個小時還沒跑完T_T)
後來我觀查一下變慢的原因,我發現主要時間花在對資料進行排列組合的步驟,
那我猜有兩種原因(以下限定程式只跑3回合)
1.排列組合項目很多。例如第2回合108個項目,到第3回合會組合到3753個,花費
33秒
2.IIS7對記憶體分配有特別的管理,因此在超過一定的量之後會變慢
(最後記憶體使用12.83MB)(我有設定ini_set( "memory_limit", "1024M" );)
3.陣列超過一定大小會變很慢(我猜暫存的陣列到後面應該超過32767列吧)
我個人改善的方法是減少迴圈數,能break掉的就break掉,至於 < 跟<= 的寫法
"感覺上",在整體演算法裡面算不痛不養的改善...
我也試著用APACHE來執行看看,結果發現效能是IIS7的2倍"差",跑出來我都囧了,
可能是我是windows環境,加上我也不知道APACHE怎麼把它給優化。
請問各位可以給我效能改善的意見嗎?
例如寫法上的問題、IIS7 or APACHE的設定,PHP參數設定之類的。
我現在當下想的到,但是還沒實作的
1.換成C語言來寫
2.試著不要全部用memory,把結果寫回disk,使記憶體、陣列使用變寫
但是第2項我怕問題根本不在那邊 >"<
最後,謝謝各位看完這篇文章。
--
從一代一代的問候就看的出來
老手對新手的照顧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.170.149
→
08/07 12:21, , 1F
08/07 12:21, 1F
推
08/07 12:59, , 2F
08/07 12:59, 2F
推
08/07 14:10, , 3F
08/07 14:10, 3F
→
08/07 14:11, , 4F
08/07 14:11, 4F
→
08/07 14:13, , 5F
08/07 14:13, 5F
→
08/07 14:19, , 6F
08/07 14:19, 6F
推
08/07 15:37, , 7F
08/07 15:37, 7F
→
08/07 16:15, , 8F
08/07 16:15, 8F
→
08/07 16:16, , 9F
08/07 16:16, 9F
→
08/07 16:17, , 10F
08/07 16:17, 10F
推
08/07 19:39, , 11F
08/07 19:39, 11F
→
08/07 19:39, , 12F
08/07 19:39, 12F
→
08/07 19:40, , 13F
08/07 19:40, 13F
→
08/07 19:41, , 14F
08/07 19:41, 14F
→
08/07 19:42, , 15F
08/07 19:42, 15F
→
08/07 19:43, , 16F
08/07 19:43, 16F
推
08/07 20:47, , 17F
08/07 20:47, 17F
推
08/08 00:31, , 18F
08/08 00:31, 18F
→
08/08 00:31, , 19F
08/08 00:31, 19F
→
08/09 23:31, , 20F
08/09 23:31, 20F
推
08/09 23:46, , 21F
08/09 23:46, 21F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
請益
7
21