看板 Soft_Job 關於我們 聯絡資訊
我是不是來慢了 = =" 看到後來大家都在講 vm gc framework 的, 跟樓主的問題好像比較遠。 直接先講結論: 你是對的。 你主管的擔心有其道理,記住有這件事,但不需太看重(原因後面會說)。 樓主的標題也怪怪的, 講真的 java 不會慢到哪,且根據你的描述你在這邊也沒別的選擇。 會慢不會在 OO 不 OO,而是在程式碼怎麼寫。 但是一開始,你不會知道怎麼寫是有問題的, 也不會知道哪些地方會是效能瓶頸,一切的一切都要跑 profile。 當然經驗的累積會讓你比較容易猜中問題在哪,但是一切的一切都要跑 profile。 效能從哪邊來? 效能是在於寫完以後根據 profile 改出來的。重點就是要「改程式碼」, 因為你的第一版絕對不會快(特別是當你一開始就想把他寫的很快的時候 :P) 跑完 profile 之後,你會需要改動程式碼, 而良好的架構會讓你改程式碼這件事變的很簡單,所以你可以更輕鬆的做到最佳化, 一個滿是 static / global 的程式,牽一髮動全身,反而更難最佳化。 你的程式在幾次迭代之後會漸漸收歛。 假設你的主管是對的,那你在跑過 profile 之後自然會發現瓶頸在物件創造, (這在 refactoring 裡面有提到實際的例子) 於是你就會思考如何重構以省掉建立這個物件的成本, 你的程式最後自然就會收斂成把該物件重複利用的樣貌。 看到沒有,你的主管可能是對的,但你也是對的, 這就是為什麼你不需要把主管的話奉為圭臬, 因為如果他是對的,最終你也會走到那邊。 當你發現這件事情以後,有一天你當了主管, 你下面的新咖有一天要大刀物件導向的時候, 你可能根據自己的經驗跟他說:「不要創太多物件,那邊會是瓶頸。」 你是出於自己的經驗跟好心,不想他走冤枉路, 但是到底是不是冤枉路,一切的一切都要跑 profile。 跟 java vm gc 快不快無關, 跑完 profile 之後最佳化才是真的。 而良好的架構讓你容易 refactor, 而容易 refactor 的程式碼才容易最佳化。 -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.160.254.105
yoco315:幹 我超嘴砲 06/21 19:17
tomap41017:不能同意一樓太多了 06/21 19:37
ericinttu: 一樓記得要先收功。 06/21 19:46
x000032001: 工? 06/21 19:49
freeunixer:樓上沒看過周星馳的賭聖... 06/21 20:11
ckstyle001:哦喔!~沒收功就罵髒話!! 06/21 20:15
x000032001:看過也忘了orz 06/21 20:17
Axcic:強 06/21 20:32
qrtt1:yoco315 是對的。 06/21 21:07
ericinttu:這一篇也可以M起來 :) 06/21 22:06
smallyuyuyu:推 06/21 23:33
ggg12345:有個依靠profile做自動optimization的研究用JikesAOS系統 06/22 08:08
VictorTom:推:D 08/18 11:51