我正在創建一個庫,我正在進行性能測試。在它中,我生成了一次Dictionary<Type, X>
。這些項目目前以隨機順序插入。字典在應用程序生命週期內保持不變。比字典<Type, X>更快的替代嗎?
它經常用於查找項目。查找是圖書館中較大的瓶頸之一。
是的,我是微型優化,但要學習。我想知道是否有更好的方法來獲得查詢性能?
更新
我用dotTrace來衡量性能。報告+ dotTrace在我的家用計算機中,所以我沒有這裏的報告(可能已經上傳到別的地方)。
我曾經在這裏找到測試:
https://github.com/jgauffin/Griffin.Container/blob/master/Source/Griffin.Container/ContainerBase.cs
(我創建容器上週五,不要期望太多): https://github.com/danielpalme/IocPerformance
字典的定義在這裏找到Update2
Dictionary.TryGetValue
總共需要101ms Resolve
(總251毫秒),如果我正確解釋了數字,這是40.2%。使用這種
static class ValueFor<T>
{
// you get another field per type T
public static X X { get; private set; }
internal static SetUpValue(X value) { X = value; }
}
剛剛訪問:
a:數據中有多少個類型/對,b:是什麼讓你認爲它是瓶頸? (即你是如何測量的?我們可以看到任何查找代碼嗎?) –
和c:是使用靜態類型的調用者(即'int'等),還是因反射而使用'Type'對象?如果呼叫者靜態地知道類型,有一些技巧可以使用 –
@MarcGravell:你可以在這些技巧(答案或鏈接)上稍微延伸一點,因爲它是一個有趣的主題。特別感謝 – mathieu