字體:小 中 大 | |
|
|
2014/02/11 21:57:36瀏覽8467|回應5|推薦14 | |
寫程式入門時當然會選用便宜甚至免費的程式軟體,但是當程式越寫越大,越寫越複雜越,越專業之後,是不是有必要開始用較專業等級,也就是較高價位的軟體呢?我們總是會被廠商或一些「高手」灌輸「工欲善其事,必先利其器」的「正確」觀念,忍不住去花錢買較高檔的軟體。 通常在我們還不知道高低價軟體對自己的工作有何效益之前,我們已經擋不住誘惑(或者虛榮),開始採用較高階的昂貴軟體,似乎這也是「專業」與「技術水準」的一個表徵,如果你都已經在寫軟體賺錢了,還用免費版的程式或資料庫,似乎有失身分地位欸?是不是呢?即使不花錢,也必須使用那些已經成名有口碑的免費軟體譬如Linux,PHP,MySQL等等。 或許是因為客家人的節儉天性,我一向是能省則省,不會迷信高昂的價格後面會有甚麼神祕不可測的好康!如果有人說某種程式很厲害,或者某種資料庫特別「強」,我會直接去讀資料或找機會測試,看看是不是真的貴得有道理?即使貴得有理也會看我有沒有必要使用到那種特強功能。甚至我都知道那個軟體確實可以合理提升我的程式效能了,我也未必會花錢(或找錢)去買!因為我既然知道它比便宜軟體好的原因之後,我自己就會寫程式啊!所以會設法自己寫程式達到那種效能。所以要我花錢買軟體還真的好難!哈哈! 不怕各位行家先進見笑,目前我寫這個看來非常龐大複雜的路口監視器車牌辨識系統,都是使用微軟的免費版VB Express 2010及Web Developer Express 2010寫的!連資料庫也只是用隨處可見的Office Access 2010!我不排斥真的有必要時會改變使用的程式或資料庫軟體,譬如C#我也很熟的,都寫了兩本書。但是目前面對所有的質疑,或者說大家批評便宜軟體的缺點,我都有合理的程式補救機制,效能不輸給高檔的程式或資料庫軟體。其實我只要說我用VB寫這些程式,已經會笑掉很多「專家」的大牙,但是我希望他們看到我的成果後笑不出來,而是讚嘆!看起來我很有機會。 譬如說,經過一番提升效能的程式設計努力,我的系統搜尋資料的速度可以快到一秒比對約30萬筆資料!目前本系統一天大概可取得50萬張有效照片與辨識結果,按合約規定必須隨時保存兩個月內的資料,那就是三千萬張了!因為系統是陸續建置的,目前剛剛跑滿兩個月,但是裡面的照片資料不滿三千萬張,約兩千四五百萬吧?想像一下,如果要找一個車牌就必須比對三千萬筆資料庫內的辨識結果,如果一秒鐘比對一萬筆(不算慢吧?)也需要3000秒就是50分鐘了!這是一般人無法忍受的。 我們小本經營,現階段不可能去買幾百萬的高檔(高速)的資料庫系統,我當然就把這個當作挑戰,努力讓搜尋時間降低到可以忍受的範圍,而且還是只用VB+Access而已!經過幾天的努力,結果就是一秒30萬張,3000/30=100,大概一分半鐘就可以查完整個資料庫,當然實際使用時都只是查某幾天的資料,大約幾秒到十幾秒就夠了。(本文發表後,此系統最終速度是達到一秒一千萬筆!) 厲害吧?如果你一開始用一般ASP.NET書上教的範例,當然也可以做出一樣的功能,但是速度絕對不會這麼快。雖然我的查詢系統表面上是網頁,但是實際到資料庫進行查詢的是另一個VB程式,不是網頁上的ASP.NET程式,因為網路資料庫架構下的查詢當然比在本機資料庫內查詢速度慢一些。但是你要如何將網頁上收到的查詢條件(任務)「外包」給另一個桌上程式?查到資料後又如何傳回網站讓網頁使用者看到呢?這有點難吧? 更有趣的是兩個程式(網頁與桌上視窗)可不是完工之後才一次交件的,雖然是網頁,但還是會一秒鐘回報一次進度,甚至一條一條顯示查詢結果!這表示兩個異質的程式是持續互動的。這樣即使查個一分多鐘,因為你一直都知道目前進度與結果,所以一點都不覺得慢!一秒半就可以查完一天221個站的五十萬筆資料,誰能說它慢呢? 結論是:在程式世界裡便宜免費的程式軟體未必不能產生高效能!好的效能其實來自特定的程式技巧,而不是封裝高貴的軟體品牌。如果可以掌握關鍵技巧,只需要幾行程式就可以讓你享有高價軟體的效能。正如武俠小說裡說的,真正的高手飛花摘葉都能傷人,哈哈!這比砸大錢買高效能軟體要好玩太多了! PS.怕觸犯個資法,車牌被小畫家擦掉了!而且這個網頁當然只有警察杯杯和我們工程師看得到。 |
|
( 心情隨筆|工作職場 ) |