Pages

2012-12-02

Properties.Settings讀值的效能低落

當應用程式想要讀取設計值,使用App.config內的設定值物件是最為簡便(string zip5 = Settings.Default.XmlZip5):
App.config 

當你要讀config裏的值時,強型別(Strong-Typed)的語法很簡單,但它背後卻藏著一個效能低調的陷阱。我們會直覺以為是個字串,實際上它不僅每次都得從所有Object Collection集合取值,而且所做的事比想像中沉重!(追查至.NET Framework官方源碼)
GetPropertyValue

它造成的影響為:若該設定值只讀一次效率損耗不大,但你若把它放在大迴圈裏去讀取,程式效能就慢如牛了,所以得事先把它讀取至一個新字串變數(字串是複製)。

我剛開始學習物件程式設計時,就隱然覺得Public Property(屬性)是把兩面刃,它雖能保護私有變數不被修改(很多書只提這優點),但很多人把Property GET作了太多背後工作,使用Class的人卻誤以為它只是一個簡單讀值而己。所以我有養成一個習慣,就是複雜計算的取值,一定是用Method()去讀取,而不用Property屬性來取得,就是避免讓人誤解繼而埋下效能地雷。

No comments: