作者littlethe (東周小星星)
看板Soft_Job
標題Re: [請益] java的效能!?
時間Thu May 26 00:21:51 2011
我是很重視OO的人,
我手上的程式是一定會物件化的,
而且物件化得很徹底,
一個物件不超過500行,
我把沒有物件化的程式重寫後,
效能不但沒有變差,
反而比前人寫的版本快非常多,
我這樣講吧...非OO的寫法或許會比OO的寫法快,
但這影響效能的因素根本不到10%,
最主要影響效能的因素是本身寫法的問題,
一樣是物件化,
為什麼要一直new東西出來?
明明就可以只new一個物件,然後不斷的重覆利用就好了,
真的沒用到時再釋放掉,
這樣效能不就好很多了?
我舉個我親身看到的例子,
有人寫黑白棋的程式呀,
每下一步棋,
就new一個黑棋或白棋在棋盤上,
好死不死那人記憶體釋放又沒做好,
下到第五回合後,就越來越lag,不久就當機了...
但我的寫法是棋盤上每一格都有黑棋,白棋,沒棋三種狀態,
我只要new一個棋盤出來就好了,
之後都只是狀態的改變,
不會再new東西出來,
這樣的寫法,
就算玩到100回合也玩得下去,
記憶體也不會爆,
也不會lag...
說到這裡,是不是可以證明OO也是可以寫得很有效能呢?
所以我想你的主管可能對OO沒有很了解,
想像一下,
想像我們在做一部車,
OO就只是讓一部車分成許多零件再組合起來,
零件好,組合得好,這部車仍然可以是世界上最快的車,
而且可以被修理,可以把零件任意更換,
效能差,我相信90%是因為程式碼沒寫好或架構有問題,
所以我很強調程式的內心功和working smart,
這才是提升效能的關鍵
※ 引述《pandaforme (建 建)》之銘言:
: 事情這樣的
: 因為公司的主管很排斥物件導向概念和新的技術
: 認為程式擁有太多class,必須要一直new產生一個新的instance,會花費很多效能!?
: 引用structs架構也會拖慢效能!?
: 所以公司的程式充斥一堆static的function和自己硬幹的詭異方法...
: 主要的理由是因為公司的程式是裝在一台伺服器,當作產品賣出
: 為了節約硬體資源,所以要避免過多的物件導向概念...
: 想請問一下各位前輩事實真的如此嗎?
: 假如是以前的電腦還有可能有這樣的問題發生,但是現在電腦都那麼快
: 頻繁的產生instance會影響到系統效能嗎?
: 而且沒有物件導向概念的程式,真的會看到吐血,所有東西都混雜在一起!
: 之後,維護起來一定是個大災難,連基本的分層概念都沒有...
: 麻煩有相關經驗的前輩,提供一下相關資訊,
: 真的將系統物件導向化會導致系統效能下降嗎?
: 謝謝~
--
寫程式是一種信仰,
寫得出來是一種藝術,
寫不出來是一種哲學。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.184.9.109
→ james732:不過前面的討論似乎都是以"同樣設計良好的程式"為前提 XD 05/26 00:36
→ littlethe:當大家都是武林高手時,還需要計較手上的劍什麼劍? 05/26 00:45
推 SHANGOYANYI:推樓上 05/26 00:50
推 luciferii:當大家都是武林高手時...兵器就是勝負重點啦 05/26 00:52
→ TonyQ:兵器是看對手使的。 05/26 00:56
→ littlethe:我只會OO一樣武器... 05/26 00:57
→ Lordaeron:不到10% 哪裏來的? 要是不到10%, 寫effective C++的是笨 05/26 01:41
→ Lordaeron:蛋就對的了. 05/26 01:42
→ askeing:都是武林高手的時候,看來手持組語神兵的高手會勝出? 05/26 09:43
→ iincho:一般來說是...XD 05/26 10:07
→ latw:當都是武林高手的時候,武器當然變成最關鍵的東西了. 05/26 10:10
→ latw:大家都拿劍 人家拿鐵劍你拿青銅劍你怎麼贏.都是高手的時候.. 05/26 10:12
→ askeing:但如果加入兵器保養、揮動速度…等,也許結果還不一定? 05/26 11:10
→ askeing:上面是亂想的 XD 05/26 11:11
→ superpai:事實上劍法本來就注重避免碰撞所以材質不重要(完全題外 05/26 11:50
→ latw:所以才特別用"鐵"跟"青銅", 重量,彈性,鋒利度,才說武器 05/26 12:13
→ latw:差異,當雙方都是高手,武器優勢你怎麼比? 05/26 12:14
→ Lordaeron:我最想知道,不到10%的數據哪裏來. 要是不到10% 05/26 12:17
→ Lordaeron:effective c++的和Accelerated C++ 05/26 12:18
→ Lordaeron:就白寫了,哪兩位作者是白痴,無聊亂寫書. 05/26 12:18
→ gname:推樓上... 拿了絕世好劍也不代表就是一統江湖了... 05/26 20:07