c# - 字典对象性能

标签 c# .net generics dictionary

我有一个可能的实现场景,我需要一个包含 3 个变量的字典对象。方言、查询名称和查询字符串。在此阶段我应该注意,编写单独的类对象不是一种选择。

我的问题是以下哪一项表现更好。

A) 将前两个变量作为复合键的单个字典对象,例如"dialect,queryname"和第三个变量作为值。

private Dictionary<string, string>

B) 一个以另一个字典对象作为值的字典对象,因此第一个变量将是主字典对象的键,第二个变量将是第二个字典对象的键,最后第三个变量将是第二个字典对象的值。

private Dictionary<string, Dictionary<string, string>>

看起来很明显,但编译器是一个神秘的东西,所以我想我应该问问你们。

谢谢

最佳答案

自娱自乐..

             Dictionary<string, string> md1 = new Dictionary<string,string>();
             Dictionary<string, Dictionary<string, string>> md2 = new Dictionary<string, Dictionary<string, string>>();

             Stopwatch st = new Stopwatch();

             st.Start(); 

             for (int i = 0; i < 2000000; i++)
             {
                 md1.Add(i.ToString(), "blabla"); 
             }

             st.Stop();

             Console.WriteLine(st.ElapsedMilliseconds);

             st.Reset();

             st.Start(); 

             for (int i = 0; i < 2000000; i++)
             {
                 md2.Add(i.ToString(), new Dictionary<string, string>()); 
             }

             st.Stop();

             Console.WriteLine(st.ElapsedMilliseconds);

             Console.ReadLine(); 

输出:

831
1399

关于c# - 字典对象性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502011/

相关文章:

c# - 使用 Zxing.Net Mobile 的表格无法识别

C# 创建一个固定大小的哈希表

c# - DataGridView 列宽百分比

c# - 在抽象方法中使用泛型

c# - 无法将泛型列表作为参数发送到 WCF 方法

c# - 按字符串数组拆分字符串并保留定界符

c# - 如何使用一个 Dockerfile 处理多个项目?

c# - 如何使用来自 nuget 的包在 Mono 中构建 C# 程序?

c# - 如何在 .net 中使用 async/await 链接方法

c# - 如何在 C# 中制作通用的 Clone 工厂方法?