看板 Soft_Job 關於我們 聯絡資訊
事情這樣的 因為公司的主管很排斥物件導向概念和新的技術 認為程式擁有太多class,必須要一直new產生一個新的instance,會花費很多效能!? 引用structs架構也會拖慢效能!? 所以公司的程式充斥一堆static的function和自己硬幹的詭異方法... 主要的理由是因為公司的程式是裝在一台伺服器,當作產品賣出 為了節約硬體資源,所以要避免過多的物件導向概念... 想請問一下各位前輩事實真的如此嗎? 假如是以前的電腦還有可能有這樣的問題發生,但是現在電腦都那麼快 頻繁的產生instance會影響到系統效能嗎? 而且沒有物件導向概念的程式,真的會看到吐血,所有東西都混雜在一起! 之後,維護起來一定是個大災難,連基本的分層概念都沒有... 麻煩有相關經驗的前輩,提供一下相關資訊, 真的將系統物件導向化會導致系統效能下降嗎? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.81.64
james732:物件導向不代表一定會頻繁的new吧? 05/20 22:05
james732:要有好維護的程式也不是非要物件導向不可 05/20 22:05
francej:動態記憶體配置(new)的確是java會比較慢的主因之一 05/20 22:32
francej:電腦很快沒錯. 但程式也變得更複雜. Java發展那麼多年了 05/20 22:34
francej:但比較大的application(比如說office, photoshop, matlab 05/20 22:35
francej:,maya,..電腦遊戲)還是很少"純"用Java寫的 05/20 22:36
francej:也許你主管是寫OS kernel出身的吧...呵呵 OO的確有它的 05/20 22:37
francej:overhead..所以不管是Windows, Linux, or Android核心都 05/20 22:38
francej:還是用純c 05/20 22:38
plover:http://en.wikipedia.org/wiki/Agobot 05/20 22:41
plover:Agobot is a multi-threaded and mostly OO program. 05/20 22:43
Lordaeron:worm 跟OO vs performance 有何關係? 05/20 22:45
plover:物件導向不見得拖慢效能。 05/20 22:50
tvbic:效能不是重點 你主管想怎麼做才是重點 05/20 22:52
plover:讚 05/20 22:54
pandaforme:F大 你的想法就我主管的想法 覺得系統執行中 05/20 23:22
pandaforme:一直不斷的在new instance是很耗資源 05/20 23:23
omnl:我認同francej說的 OO的確會比較耗資源 但是哪是寫embedded 05/20 23:27
omnl:時深刻的感受 至於伺服器上 應該軟體架構影響效能比語言還大 05/20 23:30
choufeng:要看需求 看是開發什麼系統 未必什麼都適合用Java 05/20 23:45
choufeng:用Java也未必就慢 OOP要寫得好 reuse和design patter是關 05/20 23:46
choufeng:鍵 05/20 23:46
choufeng:不過~! 我是想要問你主管是用Java開發然後用一堆static 05/20 23:49
choufeng:方法嗎? 05/20 23:49
francej:你有興趣可以去trace一下jvm. 看你new一個物件他背後會 05/21 00:14
francej:要幫你做多少事. 就知道overhead在哪裡了... 05/21 00:15
TonyQ:你可以用純c寫website 看看...我看你怎麼刻http XD 05/21 00:15
TonyQ:這年頭寫website 除了早期的cgi 以外,已經很少人用c寫了 05/21 00:16
TonyQ:因為web的瓶頸不在執行/回應效能,而在傳輸時間。 05/21 00:16
TonyQ:另一個是記憶體,這個就比較難講,這牽扯的是你有多少資料要 05/21 00:16
TonyQ:存放在畫面上記憶體上跟預期的 concurrent user 數, 05/21 00:17
TonyQ:但是物件導向跟「多」instances之間還有很遠的差異, 05/21 00:18
TonyQ:正常設計的物件導向來講應該也只是「正常」的數量而已... 05/21 00:18
TonyQ:至於說用struts 會慢之類的,其實根據個人經驗要嘛就是慢在 05/21 00:18
TonyQ:沒搞懂網頁怎麼讀取,被js跟一堆有的沒的卡住,不是真的慢 05/21 00:18
TonyQ:另一個就是被db 讀取卡住,有時會有排db pool 之類的狀況; 05/21 00:19
TonyQ:最後就是沒意義又肥的intercepter/filter插太多... 05/21 00:19
TonyQ:只要有搞懂自己在幹嘛,web 專案沒這麼恐怖... 05/21 00:22
hanbz:google就算硬體再強 都會想要爭取search time再減0.1秒XD 05/21 00:28
francej:的確是看應用. 有的應用Java,甚至就new一堆東西也無訪 05/21 00:31
askeing:主要看需求吧!如果設計有問題、混在一團、維護大爆炸… 05/21 00:32
francej:話說android上的瀏覽器引擎webkit也還是用c/c++寫的 05/21 00:32
askeing:那對產品來說也不是好事,花費的人力、時間也都是成本… 05/21 00:32
askeing:而且好的設計架構似乎也不一定要物件導向 05/21 00:33
francej:一直很好奇說透過編譯器的優化, JIT的不斷進步,有沒有可能 05/21 00:33
francej:哪天像android上面的瀏覽器可以做到全部都用Java寫 05/21 00:33
TonyQ:適才適用吧~ 05/21 00:51
stosto:老闆不會 資深員工不會 當然就不希望你寫他們看不懂的東西 05/21 01:24
lovdkkkk:static 不見得差 看怎麼用 System.out 也是 static 啊 05/21 01:29
xva:應該是主管沒學過C++吧 超蝦的 跟我之前狀況頗像 05/21 03:23
rofellosx:買更好的伺服器絕對比改寫程式快 05/21 06:15
francej:如果只是ptt等級的服務. 的確在買一台伺服器問題就解決了 05/21 09:27
francej:如果是facebook等級的服務..那你得再買幾萬台伺服器吧 05/21 09:27
choufeng:應該這麼說吧~效能要求極為嚴苛的系統軟體,如:遊戲.繪圖 05/21 10:28
choufeng:肯定不適合用Java外 其它大部份的系統軟體應用,它的瓶頸 05/21 10:30
choufeng:不會在所謂的"Java效能"上 整體系統的規劃與架構將才會是 05/21 10:32
choufeng:最主要的議題 而不是在比較哪些程式語言快.哪些慢. 只會 05/21 10:33
choufeng:單就程式語言的快慢去衡量 恐怕太狹義與膚淺 05/21 10:34
francej:eclipse用起來還是比visual studio卡. 不知道是因為沒寫好 05/21 10:34
francej:還是因為java先天就是比較慢的關係 05/21 10:34
choufeng:如果真懂的人不會去說哪些工具語言絕對的好或不好 只會有 05/21 10:36
choufeng:適合與不適合 05/21 10:37
choufeng:francej:這當然就是因為Java本身透過JVM來執行 效率上一 05/21 10:40
choufeng:定沒比native要來的要好 這是肯定的 然後再者就是Java 05/21 10:40
choufeng:開發UI來講 本身就不是它的強項 這塊本來就會比較弱 05/21 10:41
choufeng:至於Eclipse是不是沒寫好感覺很肥大 就見人見志了 我個人 05/21 10:43
choufeng:是覺得它是有改進的空間 因為它真的有點慢@@ 05/21 10:43
edward13:好奇原po公司產品是什麼 難道客戶需求都不會改變嗎? 05/21 10:54
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
iincho:是說有人習慣看到JVM就開槍吧XD, 這當然是最簡單的結論啦 05/21 12:17
iincho:VM肯定是比native code慢的,但是通常程式會慢和這關係不大 05/21 12:18
newstar2007:這是Java的原罪 太慢了... 05/22 03:58
kimkao:拿Visual Studio跟 Eclipse比真的有點不太合宜... 05/22 10:53
siko24s:根據我的印象,static區塊的物件或程式碼一開始就load進 05/25 11:17
siko24s:記憶體裡面了;我想這樣應該沒有比較省記憶體才是。 05/25 11:17
cupidwang:系統應該是在效能與維護間取得平衡才是,不然都是災難 05/30 12:13