看板 Soft_Job 關於我們 聯絡資訊
非常感謝各位前輩相關的資訊 小弟公司的主要產品是一台GATEWAY(公司開發的軟體裝在一台伺服器上), 該GATEWAY的架構前端會有一個過濾器(類似IPTABLE功能,用c寫的), 可以擋住非法或不允許的網路連線 當允許某網路連線就可以進來存取資料庫資料,存取資料的模組是用java寫的 存取資料模組本身就一個web service,常駐在伺服器內,隨時服務允許的網路連線 至於資料庫是MySql 為了避免效能低落,公司前同事認為不要new instance就可以大幅提升效率, 所以在存取資料模組的class中裡面的function都為static... 另一方面為了好讓使用者管理和設定,有做一個web的管理介面出來, jsp和其對應的servlet偶合度相當高,沒有分層的概念... 我被交派的工作是從資料庫擷取資料出來,再呈現到頁面上 在實作過程中,採用structs framework,和一些基本的物件導向概念 例如:class和class之前溝通會用interface去接...等 在code review過程中,主管問我:為什麼從資料庫擷取出來的資料要轉成data model, 這樣當很多人使用這項功能,不就要頻繁new instance,產品的效能會被拖慢! 主管強調盡量不要去new instance,因為這是overhead! 也強調不要太物件導向,interface也不用,直接溝通就好 我們公司產品強調效能,太物件導向會導致效能低落 盡量也不要用structs framework,這也有可能拖慢效能的原因 在我過去的工作經驗和認知中,抽interface和將資料庫的資料轉成data model 是一件在平凡不過的事,怎麼會變成影響效能的元凶? 根據以往的工作經驗,沒有做好基本的分層,盡量降低偶合度, 這將會是一個大災難的開始! 當時程再趕,多人同時開發,再經過幾次同事的來來去去, 程式碼將會變成一個大怪物 但是這個論調主管不接受,可能目前只有兩個人在開發的關係吧... 職場上,我的工作經驗和年紀對公司都是菜鳥, 所以我也沒有足夠力足點去說服我主管 另外一方面,我剛到這家公司不久,對公司沒什麼貢獻度, 憑什麼要人家信服你的說法 技術上,我想...這個就有得吵了,畢竟主管最大... 真的非常感謝回文的前輩,讓我學到不少東西! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.17.182 ※ 編輯: pandaforme 來自: 180.176.17.182 (05/21 23:31)
TonyQ:err , ORM 的效能一直都是論戰的重點項目之一啊 05/21 23:30
※ 編輯: pandaforme 來自: 180.176.17.182 (05/21 23:32)
deuter:"認為...就可以大幅提升效率", 效率瓶頸是要profile出來的 05/21 23:35
deuter:不是用猜的 05/21 23:35
james732:推樓上,出現了「認為」兩個字就讓人覺得很沒說服力 XDD 05/21 23:39
loveme00835:但是真的跑出報表, 主管會採納? 還是難啦! 05/21 23:40
kimkao:如果要ORM確實是要吃額外的Memory的..如果頻繁資料轉換 05/22 00:00
kimkao:且資料完全不能有cache重用機制的話 那可得好好考慮了 05/22 00:01
SHANGOYANYI:感覺你主管並不想讓程式長太大XD 05/22 00:51
pandaforme:管理層面就算了,只是小職員也沒有多大影響力 05/22 01:00
pandaforme:但是技術方面我想確認 這樣做法到底是不是會沒有效率 05/22 01:00
bravomao:吃記憶體個人覺得實屬正常,我想再吃記憶體的前提之下, 05/22 01:53
bravomao:應該要注意的是GC的時間、演算法、generation的分配問題 05/22 01:54
bravomao:單元測試的時候不大可能會遇到這類的問題,但是大規模整 05/22 01:55
bravomao:合測試之下,很多問題是程式與環境息息相關的。 05/22 01:56
bravomao:我比較好奇的是...這個系統的延展性要求以及商業定位是否 05/22 02:05
bravomao:有需要很大的空間?如果不是,簡單不就是最好的嗎? 05/22 02:06
yauhh:你的看法,就跟這次談的效能問題一樣: 他們不應該一開始就 05/22 07:28
yauhh:只想一次做到效能最優的軟體; 你也不必一開始就費心針砭公司 05/22 07:29
yauhh:做事的方法. 05/22 07:29