看板 Soft_Job 關於我們 聯絡資訊
我是很重視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