如何設計出高效能的增益集?PARTI

如何設計出高效能的增益集?PARTI

這一年大部分的時間都在學習:如何將自己vb6的程式升級至vb.net,因為自己的基礎不紮實,進度很緩慢,而且有些問題一直無法克服,例如執行效率的問題,因為自己所寫的程式主要是office的增益集,不是網頁程式,像.net framework 這種Just-in-time compilation的架構,如asp.net網頁程式這種可以持續在伺服器執行服務,不需要經常重新啟動載入,只有初次執行時需要編譯一次,編譯之後會暫存於記憶體之中,隨時提供使用。使用者並不會感受到執行效率與編譯式程式有太大的差異。

但是office的增益集在結束office程式,也會結束其程序,也不會存於記憶之中,所以用vb.net所寫的office增益集,在每次重新啟動office時,都會重新進行載入增益集,只要執行到該增益集的功能就會進行編譯,雖然只有執行到的功能才會編譯,不會全部進行編譯,如果硬體夠好需要編譯的時間並不會太久,但是如果增益集較龐大就麻煩了,每次重新啟動office執行該增益集都要花一段時間進行編譯,這樣的使用經驗並不是很好的感覺。

回到本文的標題,如何設計出高效能的增益集?當然程式碼寫得好壞一定會影響程式的效能,但是以我這種業餘程度大概也寫不出什麼高效能的程式碼,選擇開發的程式語言與工具對我來說也許更重要。目前可以設計增益集的程式語言工具很多,最方便的就是OFFICE內建的VBA,雖然利用VBA可以讓程式設計者快速完成增益集的設計,但是如同VB.NET的問題,一樣有效能的問題而且可能更糟,尤其當增益集程式越來越大的時候。

上網找了一些相關資料,大部分提到設計高效能的增益集程式,都是提到利用 C、C++、或VB6所寫成之編譯成機械碼的程式,筆者早先就是利用VB6開發增益集,開發速度快且產品的效能不會差太多,但是這一條路看起來已經是行不通了,因為利用VB6寫的程式在64位元的環境已經無法使用,微軟也沒有打算讓VB6繼續在64位元環境中繼續發展,網路上大部分文章提到要在64位元機器執行VB6的程式都是利用虛擬機器架設32位元的環境,這對一般的使用者是一個門檻。

所以歸根究底也許要改變開發的程式語言與程式的基本結構才是正解!

cool      歡迎引用,請注明來源出處!

作者:楊煥謀