在.net4.0中,可以使用lazy來實現物件的延遲初始化,從而優化系統的效能。延遲初始化就是將物件的初始化延遲到第一次使用該物件時。延遲初始化是我們在寫程式時經常會遇到的情形,例如建立某一物件時需要花費很大的開銷,而這一物件在系統的執行過程中不一定會用到,這時就可以使用延遲初始化,在第一次使用該物件時再對其進行初始化,如果沒有用到則不需要進行初始化,這樣的話,使用延遲初始化就提高程式的效率,從而使程式占用更少的記憶體。
下面我們來看**,新建乙個控制台程式,首先建立乙個student類,**如下:(由於用的英文版作業系統,所以提示都寫成英文,還請見諒)
using然後在program.cs中寫如下**:system;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
public
string name
public
int age }}
using點選f5,執行結果如下:system;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace}}
可以看到,student是在輸出name屬性時才進行初始化的,也就是在第一次使用時才例項化,這樣就可以減少不必要的開銷。
lazy物件初始化預設是執行緒安全的,在多執行緒環境下,第乙個訪問 lazy物件的 value 屬性的執行緒將初始化 lazy物件,以後訪問的執行緒都將使用第一次初始化的資料。
參考:
C 效能優化 延遲初始化Lazy
我們建立某乙個物件需要很大的消耗,而這個物件在執行過程中又不一定用到,為了避免每次執行都建立該物件,這時候延遲初始化 也叫延遲例項化 就出場了。延遲初始化出現於.net 4.0,主要用於提高效能,避免浪費計算,並減少程式記憶體要求。也可以稱為,按需載入。lazyxx new lazy xx代表變數名...
C 之 反射效能優化2
問題回顧 在上篇部落格中,我介紹了優化反射的第乙個步驟 用委託呼叫代替直接反射呼叫。然而,那只是反射優化過程的開始,因為新的問題出現了 如何儲存大量的委託?如果我們將委託儲存在字典集合中,會發現這種設計會浪費較多的執行時間,因為這種設計會引發三個新問題 1.的執行路徑變長了。2.字典查詢是有成本開銷...
c 伺服器開發之效能優化
為什麼要寫這篇文章?聊技術的時候,談到記憶體問題 cpu問題 效率問題的時候,無疑是考量乙個工程師的實戰水平,作為c 開發工程師,沒有自己解決以上問題的專業手段,或許就是缺陷。我之所以寫這個文章,主要是為了記錄 分享我的辦法。我之前寫過記憶體洩漏的一篇文章 其實也是一種手段,如果為你所用,聊技術的時...