2014-09-12 117 views
0

所以我在我們的WCF服務中看到了一段代碼,它從config(appsettings)讀取一個值並將該值分配給一個變量。該變量隨後被詢問以改變方法調用的結果。ConfigurationManager vs變量

有問題的特定WCF調用被調用了很多。我正在考慮是否刪除變量和它的分配,因此在它的位置對ConfigurationManager.AppSettings [「seeting」]進行多次調用將比爲新變量分配內存以保存值ConfigurationManager.AppSettings [「seeting 「]在每個方法調用(儘管在方法執行的頂部每次調用一次)。

這可能是一個微型優化,但是堆上的內存分配每次執行都讓我思考是否更快地詢問AppSettings後面的NameValueCollection或爲更簡潔的代碼分配內存。

意見表示歡迎。

+1

你爲什麼不對它進行基準測試並找出哪個性能更高? – DGibbs 2014-09-12 11:52:52

+0

我應該做的。在這個場合,我認爲尋求更廣泛的意見可能比標杆更快,讓我專注於提供什麼被問到我。如果我找到時間,我會提出結果。 – 2014-09-12 12:03:31

回答

1

意見:微優化是一切罪惡的根源...

如果你覺得這是一個問題,嘗試解決這個問題。否則,我懷疑這確實是一個問題。唯一的問題是,爲了弄清楚,你將不得不花費一些時間來分析你的應用程序。你花費的時間可能會比你節省的時間更長....真的。

(說了這句話,我知道你的感受,因爲我有時候自己想知道那些問題......我通常會盡力讓自己回到生產性工作中,而不是白日夢到它...... :)

1

我懷疑你的問題出在ConfigurationManager中,因爲(每MSDN):

For some sections such as appSettings and connectionStrings, use the AppSettings and ConnectionStrings classes. These members perform read-only operations, use a single cached instance of the configuration, and are multithread aware. - http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager(v=vs.110).aspx

作爲在AppSettings的緩存,通過ConfigurationManager.AppSettings訪問該集合[ 「X」]會不是浪費的操作。