[請益] java的效能!?

看板Soft_Job (軟體人)作者 (建 建)時間15年前 (2011/05/20 21:45), 編輯推噓13(13067)
留言80則, 21人參與, 最新討論串1/52 (看更多)
事情這樣的 因為公司的主管很排斥物件導向概念和新的技術 認為程式擁有太多class,必須要一直new產生一個新的instance,會花費很多效能!? 引用structs架構也會拖慢效能!? 所以公司的程式充斥一堆static的function和自己硬幹的詭異方法... 主要的理由是因為公司的程式是裝在一台伺服器,當作產品賣出 為了節約硬體資源,所以要避免過多的物件導向概念... 想請問一下各位前輩事實真的如此嗎? 假如是以前的電腦還有可能有這樣的問題發生,但是現在電腦都那麼快 頻繁的產生instance會影響到系統效能嗎? 而且沒有物件導向概念的程式,真的會看到吐血,所有東西都混雜在一起! 之後,維護起來一定是個大災難,連基本的分層概念都沒有... 麻煩有相關經驗的前輩,提供一下相關資訊, 真的將系統物件導向化會導致系統效能下降嗎? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.81.64

05/20 22:05, , 1F
物件導向不代表一定會頻繁的new吧?
05/20 22:05, 1F

05/20 22:05, , 2F
要有好維護的程式也不是非要物件導向不可
05/20 22:05, 2F

05/20 22:32, , 3F
動態記憶體配置(new)的確是java會比較慢的主因之一
05/20 22:32, 3F

05/20 22:34, , 4F
電腦很快沒錯. 但程式也變得更複雜. Java發展那麼多年了
05/20 22:34, 4F

05/20 22:35, , 5F
但比較大的application(比如說office, photoshop, matlab
05/20 22:35, 5F

05/20 22:36, , 6F
,maya,..電腦遊戲)還是很少"純"用Java寫的
05/20 22:36, 6F

05/20 22:37, , 7F
也許你主管是寫OS kernel出身的吧...呵呵 OO的確有它的
05/20 22:37, 7F

05/20 22:38, , 8F
overhead..所以不管是Windows, Linux, or Android核心都
05/20 22:38, 8F

05/20 22:38, , 9F
還是用純c
05/20 22:38, 9F

05/20 22:41, , 10F

05/20 22:43, , 11F
Agobot is a multi-threaded and mostly OO program.
05/20 22:43, 11F

05/20 22:45, , 12F
worm 跟OO vs performance 有何關係?
05/20 22:45, 12F

05/20 22:50, , 13F
物件導向不見得拖慢效能。
05/20 22:50, 13F

05/20 22:52, , 14F
效能不是重點 你主管想怎麼做才是重點
05/20 22:52, 14F

05/20 22:54, , 15F
05/20 22:54, 15F

05/20 23:22, , 16F
F大 你的想法就我主管的想法 覺得系統執行中
05/20 23:22, 16F

05/20 23:23, , 17F
一直不斷的在new instance是很耗資源
05/20 23:23, 17F

05/20 23:27, , 18F
我認同francej說的 OO的確會比較耗資源 但是哪是寫embedded
05/20 23:27, 18F

05/20 23:30, , 19F
時深刻的感受 至於伺服器上 應該軟體架構影響效能比語言還大
05/20 23:30, 19F

05/20 23:45, , 20F
要看需求 看是開發什麼系統 未必什麼都適合用Java
05/20 23:45, 20F

05/20 23:46, , 21F
用Java也未必就慢 OOP要寫得好 reuse和design patter是關
05/20 23:46, 21F

05/20 23:46, , 22F
05/20 23:46, 22F

05/20 23:49, , 23F
不過~! 我是想要問你主管是用Java開發然後用一堆static
05/20 23:49, 23F

05/20 23:49, , 24F
方法嗎?
05/20 23:49, 24F

05/21 00:14, , 25F
你有興趣可以去trace一下jvm. 看你new一個物件他背後會
05/21 00:14, 25F

05/21 00:15, , 26F
要幫你做多少事. 就知道overhead在哪裡了...
05/21 00:15, 26F

05/21 00:15, , 27F
你可以用純c寫website 看看...我看你怎麼刻http XD
05/21 00:15, 27F

05/21 00:16, , 28F
這年頭寫website 除了早期的cgi 以外,已經很少人用c寫了
05/21 00:16, 28F

05/21 00:16, , 29F
因為web的瓶頸不在執行/回應效能,而在傳輸時間。
05/21 00:16, 29F

05/21 00:16, , 30F
另一個是記憶體,這個就比較難講,這牽扯的是你有多少資料要
05/21 00:16, 30F

05/21 00:17, , 31F
存放在畫面上記憶體上跟預期的 concurrent user 數,
05/21 00:17, 31F

05/21 00:18, , 32F
但是物件導向跟「多」instances之間還有很遠的差異,
05/21 00:18, 32F

05/21 00:18, , 33F
正常設計的物件導向來講應該也只是「正常」的數量而已...
05/21 00:18, 33F

05/21 00:18, , 34F
至於說用struts 會慢之類的,其實根據個人經驗要嘛就是慢在
05/21 00:18, 34F

05/21 00:18, , 35F
沒搞懂網頁怎麼讀取,被js跟一堆有的沒的卡住,不是真的慢
05/21 00:18, 35F

05/21 00:19, , 36F
另一個就是被db 讀取卡住,有時會有排db pool 之類的狀況;
05/21 00:19, 36F

05/21 00:19, , 37F
最後就是沒意義又肥的intercepter/filter插太多...
05/21 00:19, 37F

05/21 00:22, , 38F
只要有搞懂自己在幹嘛,web 專案沒這麼恐怖...
05/21 00:22, 38F

05/21 00:28, , 39F
google就算硬體再強 都會想要爭取search time再減0.1秒XD
05/21 00:28, 39F

05/21 00:31, , 40F
的確是看應用. 有的應用Java,甚至就new一堆東西也無訪
05/21 00:31, 40F

05/21 00:32, , 41F
主要看需求吧!如果設計有問題、混在一團、維護大爆炸…
05/21 00:32, 41F

05/21 00:32, , 42F
話說android上的瀏覽器引擎webkit也還是用c/c++寫的
05/21 00:32, 42F

05/21 00:32, , 43F
那對產品來說也不是好事,花費的人力、時間也都是成本…
05/21 00:32, 43F

05/21 00:33, , 44F
而且好的設計架構似乎也不一定要物件導向
05/21 00:33, 44F

05/21 00:33, , 45F
一直很好奇說透過編譯器的優化, JIT的不斷進步,有沒有可能
05/21 00:33, 45F

05/21 00:33, , 46F
哪天像android上面的瀏覽器可以做到全部都用Java寫
05/21 00:33, 46F

05/21 00:51, , 47F
適才適用吧~
05/21 00:51, 47F

05/21 01:24, , 48F
老闆不會 資深員工不會 當然就不希望你寫他們看不懂的東西
05/21 01:24, 48F

05/21 01:29, , 49F
static 不見得差 看怎麼用 System.out 也是 static 啊
05/21 01:29, 49F

05/21 03:23, , 50F
應該是主管沒學過C++吧 超蝦的 跟我之前狀況頗像
05/21 03:23, 50F

05/21 06:15, , 51F
買更好的伺服器絕對比改寫程式快
05/21 06:15, 51F

05/21 09:27, , 52F
如果只是ptt等級的服務. 的確在買一台伺服器問題就解決了
05/21 09:27, 52F

05/21 09:27, , 53F
如果是facebook等級的服務..那你得再買幾萬台伺服器吧
05/21 09:27, 53F

05/21 10:28, , 54F
應該這麼說吧~效能要求極為嚴苛的系統軟體,如:遊戲.繪圖
05/21 10:28, 54F

05/21 10:30, , 55F
肯定不適合用Java外 其它大部份的系統軟體應用,它的瓶頸
05/21 10:30, 55F

05/21 10:32, , 56F
不會在所謂的"Java效能"上 整體系統的規劃與架構將才會是
05/21 10:32, 56F

05/21 10:33, , 57F
最主要的議題 而不是在比較哪些程式語言快.哪些慢. 只會
05/21 10:33, 57F

05/21 10:34, , 58F
單就程式語言的快慢去衡量 恐怕太狹義與膚淺
05/21 10:34, 58F

05/21 10:34, , 59F
eclipse用起來還是比visual studio卡. 不知道是因為沒寫好
05/21 10:34, 59F

05/21 10:34, , 60F
還是因為java先天就是比較慢的關係
05/21 10:34, 60F

05/21 10:36, , 61F
如果真懂的人不會去說哪些工具語言絕對的好或不好 只會有
05/21 10:36, 61F

05/21 10:37, , 62F
適合與不適合
05/21 10:37, 62F

05/21 10:40, , 63F
francej:這當然就是因為Java本身透過JVM來執行 效率上一
05/21 10:40, 63F

05/21 10:40, , 64F
定沒比native要來的要好 這是肯定的 然後再者就是Java
05/21 10:40, 64F

05/21 10:41, , 65F
開發UI來講 本身就不是它的強項 這塊本來就會比較弱
05/21 10:41, 65F

05/21 10:43, , 66F
至於Eclipse是不是沒寫好感覺很肥大 就見人見志了 我個人
05/21 10:43, 66F

05/21 10:43, , 67F
是覺得它是有改進的空間 因為它真的有點慢@@
05/21 10:43, 67F

05/21 10:54, , 68F
好奇原po公司產品是什麼 難道客戶需求都不會改變嗎?
05/21 10:54, 68F

05/21 12:09, , 69F
Eclipse 其實本身是沒啥問題的,它的performance核心多在
05/21 12:09, 69F

05/21 12:09, , 70F
plug-in , 事實上以我的使用經驗 ,拿 mvs 跟eclipse 比我是
05/21 12:09, 70F

05/21 12:09, , 71F
覺得蠻不可思議的。
05/21 12:09, 71F

05/21 12:09, , 72F
*瓶頸
05/21 12:09, 72F

05/21 12:10, , 73F
有機會再來聊聊Eclipse 為什麼有時會慢,這跟架構有關系。
05/21 12:10, 73F

05/21 12:17, , 74F
是說有人習慣看到JVM就開槍吧XD, 這當然是最簡單的結論啦
05/21 12:17, 74F

05/21 12:18, , 75F
VM肯定是比native code慢的,但是通常程式會慢和這關係不大
05/21 12:18, 75F

05/22 03:58, , 76F
這是Java的原罪 太慢了...
05/22 03:58, 76F

05/22 10:53, , 77F
拿Visual Studio跟 Eclipse比真的有點不太合宜...
05/22 10:53, 77F

05/25 11:17, , 78F
根據我的印象,static區塊的物件或程式碼一開始就load進
05/25 11:17, 78F

05/25 11:17, , 79F
記憶體裡面了;我想這樣應該沒有比較省記憶體才是。
05/25 11:17, 79F

05/30 12:13, , 80F
系統應該是在效能與維護間取得平衡才是,不然都是災難
05/30 12:13, 80F
文章代碼(AID): #1Drd2DX5 (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1Drd2DX5 (Soft_Job)