跳到主要內容

程式效率

qing昨天給予指教,指出動態語言的 instance在casting 時所消耗的非常小。我寫了兩個程式做實驗,一個是Java,另一個是C++;兩種語言的結果沒有太大的差異,呼叫幾十萬次只差幾十毫秒。因此設計時應遵守ISP,盡量使用抽象。

我之所以會有錯誤觀念,是因為十年前看到一篇文章寫BC++大量使用繼承所以比VC慢,仔細想想,這篇文章應該是錯的。程式改善效率應該從瓶頸下手,通常改變演算法與設計是最有效的方式。

這篇我有提到愈來愈少Programmer想要optimize,尤其在微軟的政策下,都以簡單開發為原則,相信市場上高手會愈來愈難找。

程式的效率應該做profile分析,在動態網站的缺點中突顯出一般設計者的迷思。XOOPS在我所認定的標準,算是很慢。什麼叫快呢?嗯,我想想... 你如果知道Yahoo首頁的request/second,大概就知道什麼叫做快。

Coding的本質在Code我指出.Net程式員把SQL Server搞掛,為什麼呢?原來在.Net 2.0裏預設是啟動connection pool,必須自己加上pooling=false,否則會搞出一堆的connection,而且必須等到timeout才關得掉。當然.Net 2.0有ClearAllPools和ClearPool,但Visual Studio使用者那裏會知道那麼多呢?一般企業內MIS只知道連SQLServer,拖拉之後就做完,連測試都不完整,那還管得到效能。也因此,一般企業程式的分析,都變成資料庫分析,而不是物件分析,頂多做到功能分析。(此時又想起7年前做銀行系統,都是以幾支交易為功能單位。)

十年前的電腦硬體效能可能只有現在的百分之一,但一樣可以做出優秀的軟體。現在硬體不斷的進步,軟體的複雜度提昇,而人員的素質卻沒有跟著成長。

好的軟體必須從系統架構開始,再來是設計,最後才是程式語言實作。其中涉及的知識很廣,發生問題時通常都不是Visual Studio拖拉就能解決。

牢騷吐完了,我認為企業的IT主管必須有認知,軟體開發不是請個便宜的人力就能應付,現有的人力很可能無法跟上時代潮流。導入軟體工程以正規的方式開發才是王道,我做的那些東西,充其量不過是玩具。

留言

這個網誌中的熱門文章

DBeaver 介面語言

DBeaver是我個人頗常用的一套跨平台Database管理工具,最近升級後發現Windows版本居然變成簡體中文,而且無法切換為英文。

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

如何將較高版本SQL Server複製到低版本SQL Server (降級為舊版)並保留權限及資料庫圖表

一般若是要將SQL Server裡的Database轉往其他Server時,最簡單的方式就是備份(Backup)後再還原(Restore),或者是䣃離(detach)後附加(attach)。 但是很不幸地,若是由較低版本(e.g. 2008)到較高版本(e.g. 2012)要怎麼辦呢?