→ TonyQ:Eclipse 其實本身是沒啥問題的,它的performance核心多在 05/21 12:09
→ TonyQ:plug-in , 事實上以我的使用經驗 ,拿 mvs 跟eclipse 比我是 05/21 12:09
→ TonyQ:覺得蠻不可思議的。 05/21 12:09
→ TonyQ: *瓶頸 05/21 12:09
→ TonyQ:有機會再來聊聊Eclipse 為什麼有時會慢,這跟架構有關系。 05/21 12:10
筆者自己參與過兩三隻 Eclipse plugin 的開發,
Eclipse 本身基本上至少在我的機器上是很順的,
我開發 Eclipse plug-in 時,
同時要開三隻 Eclipse 去進行開發/測試,
基本上反應效率跟我當年用 MVS 實在是有得比。
(事實上 mvs 2003 -> 2005 肥到翻又慢,
當年用完 2005 我直接 uninstall 回 2003 ,
或許 mvs 2008 有改善, not sure。)
yes ,但有些時候他是慢的,我拿我知道的幾件事情來講。
在 Eclipse 裡面他是走 extension point 的觀念,讓人家掛東西,
只要它開了接口,別人掛進來的東西他都得照單全收,
高擴充性,任何人都可以簡單作新feature 。
( mvs 不行,這是我覺得拿mvs跟eclipse這種可擴充的項目,
比較很有趣的原因,兩個的環境條件不一樣,詳情後敘。 )
這就是問題所在。
-----------------------------------
以我前陣子發的一隻 Embbed Jetty Launcher plug-in 來看,
( http://code.google.com/p/run-jetty-run/ )
我需要在它的右鍵 run as / debug as 掛上 short-cut,
讓使用者可以輕鬆的右鍵在 edtior 或者 package/navatior explorer 上,
進行啟動該專案 jetty instance 行為。
但是有些 resource 又不在 web applcation 專案內,
比方說可能是完全無關的 java 專案,
所以我必須要判斷 resource 是我可以執行的。
這時候我就會寫 enablement extension ,
他會在每次使用者右鍵選單時去掃我有沒有符合條件。
以我的例子來講我必須要scan整個project 判斷有沒有WEB-INF/web.xml,
今天假設他resource多到一個很誇張的程度(幾千萬筆資料?),
我的 alg 難免就會 slow down 到 Eclipse 的速度。
而且是使用者每次右鍵點到該專案 run as / debug as 就會 slow 喔。
難免會有不長眼的天兵做出很笨的 plug-in extension,
這問題跟 firefox 大多是被 add-on 拖垮效能是一樣的。
-----------------------------------
還有一些根本就實作上的問題,像是我這隻 plug-in 是用來取代 WTP的,
WTP 在launch web server 時 需要 copy 所有resource 到temp folder,
這件事情當然快不起來,以Run-Jetty-Run這隻的實作方案,
就是直接拿他現成的output直接用,不另外複製開關效率至少快上五倍。
也不用費心在 clean 它的 resource。
還有像 M2E 這種每次都需要去 fetch 很多網站,
要 index 回來 build dependency 的,當然會慢,
所以我覺得其實 Eclipse 早期雖然真的蠻慢的,
現在在架構上的改善已經都比以前好很多了。
當然因為開放式架構而造成的 slow down 也不是沒有,
我先前有去看一下 Eclipse edtior 的區塊怎麼寫的,
他是透過區域字串切分的方式去切每個不同的「token」,
因為每次內容改變,結構都有可能改變,所以一定要重新parse,
editor 行數多跟行數少就會直接影響效能。
以我們家自己開發的 eclipse editor 來講,400~500 行的xml很快,
到七八千多行時就慢的跟龜一樣,因為每次都要重新解析 xml 。
不過這我想應該只要是 edtior 大概都逃不掉,
特別是在這種架構下的 editor。
Application 的 slow down 是需要 profiling 它的熱點,
莫名其妙的拿幾個 ap 來比是沒有意義的。
Java 的東西大多是在 launch 會慢,因為需要啟動 jvm,
用 jdownloader 這類 tool時就可以清楚感覺到這點,
但是執行時,不見得能到有感的程度。
但在 web server 上這點是無感的,因為server通常都開一次就跑很久,
開很久就讓他慢慢開就好了,反正有 load balance + fail over 可以用...
--
我:一半的日子讓你說,我聽你說你的所有______________________________________
______________________________________一半的日子我想說,對你說過去的所有:我
_______________________________________________________
在討論中妥善扮演兼具聆聽與分享的角色,是我們一生的課題。
_______________________________________________________
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.82.56.59
※ 編輯: TonyQ 來自: 111.82.56.59 (05/22 15:15)
※ 編輯: TonyQ 來自: 111.82.56.59 (05/22 15:16)
※ 編輯: TonyQ 來自: 111.82.56.59 (05/22 15:17)
推 stosto:其實阻礙點在花店~ 05/22 15:17
→ TonyQ:花店? XD 05/22 15:19
→ james732:種花店信 XD 05/22 15:35
→ robler:我think 你用了too much不必要的english 05/22 16:27
推 ledia:糟了 我覺得這樣的英文剛剛好 05/22 17:19
推 liberation:大家都這樣穿插英文吧,算正常 05/22 17:44
推 zanyking:專有名詞用英文還好吧?中文翻譯又沒有統一。 05/22 17:52
推 GoForward:專有名詞用英文比較好, 另外接口是指interface嗎?介面? 05/22 19:41
→ TonyQ:接口是講 extension point . 他比interface還多一點東西 05/22 22:02
→ TonyQ:文章是給人看得,哪些英文字讀不懂可以問。 05/22 22:03
→ TonyQ:平常工作主要都用英文,突然叫我寫中文我還頗不習慣.orz 05/22 22:04
推 luciferii:這些英文這樣用算正常 +1 05/22 23:43
推 lovepc:這樣的英文很正常+1 翻譯成中文才詭異 05/24 14:00
推 PeacockLiu:覺得英文這樣看得很順+1 05/27 23:57