草庐IT

swift-dictionary

全部标签

c# - 比 Dictionary<Type, X> 更快的选择?

我正在创建一个正在进行性能测试的库。在其中我生成了一个Dictionary一次。这些项目当前以随机顺序插入。字典在应用程序生命周期内保持不变。然后它经常用于查找项目。查找是库中较大的瓶颈之一。是的,我正在微观优化,但要学习。我想知道是否有更好的方法来获得查找性能?更新我使用dotTrace来衡量性能。报告+dotTrace在我的家用电脑中,所以我这里没有报告(本可以上传到其他地方)。我使用了这里的测试:https://github.com/danielpalme/IocPerformance字典定义可在此处找到:https://github.com/jgauffin/Griffin.C

c# - : Dictionary<string, object> 或 Dictionary<enum,object> 哪个更快/更有效?

enum类型用作字典键时是否比string类型更快/更有效?IDictionaryorIDictionary事实上,哪种数据类型最适合作为字典键,为什么?请考虑以下事项:注意:为简单起见,只有5个属性structMyKeys{publicstringIncomplete="IN";publicstringSubmitted="SU";publicstringProcessing="PR";publicstringCompleted="CO";publicstringClosed="CL";}和enumMyKeys{Incomplete,Submitted,Processing,Comp

c# - Json Serialize Dictionary<Enum, Int32> 的问题

每当我尝试序列化字典时,我都会得到异常:System.ArgumentException:Type'System.Collections.Generic.Dictionary`2[[Foo.DictionarySerializationTest+TestEnum,Foo,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null],[System.Int32,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]'isnotsupportedfors

c# - 用 foreach 遍历 Dictionary,这是按什么顺序完成的?

假设我有一个字典,我按特定顺序添加每个键和值条目。现在,如果我希望稍后能够以添加条目的相同顺序迭代此Dictionary,这是我在该字典上使用简单的foreach循环获得的顺序吗?如果没有,我会很高兴听到我该怎么做,我知道这可以用List而不是Dictionary轻松完成,但我不想到。谢谢 最佳答案 普通的Dictionary不保证项目的顺序。你需要OrderedDictionary如果您想维护添加到其中的订单项目。请注意,在.Net框架中没有此类的通用版本,因此要么必须放弃一些类型安全性,要么找到其他实现(即https://www

c# - 将 Dictionary<string, string> 转换为 Dictionary<string, object> 的最简单方法是什么?

我使用的API返回键值集合作为Dictionary.我需要将其转换为Dictionary.我觉得应该有一种方法可以在不“手动”遍历每个键值对的情况下进行这种转换/映射,但谷歌搜索或C#对象引用并没有立即产生解决方案。 最佳答案 尝试以下操作varnewMap=oldMap.ToDictionary(pair=>pair.Key,pair=>(object)pair.Value); 关于c#-将Dictionary转换为Dictionary的最简单方法是什么?,我们在StackOverfl

c# - 如何证明 Dictionary 的 TryGetValue 的双重检查锁定模式不是线程安全的

最近我看到一些C#项目在Dictionary上使用双重检查锁定模式。像这样:privatestaticreadonlyobject_lock=newobject();privatestaticvolatileIDictionary_cache=newDictionary();publicstaticobjectCreate(stringkey){objectval;if(!_cache.TryGetValue(key,outval)){lock(_lock){if(!_cache.TryGetValue(key,outval)){val=newobject();//factorycon

c# - 散列过程如何在 Dictionary<TKey, TValue> 中工作

Dictionary中的散列过程是如何工作的?我读到使用字典可以更快地查找。但是没看懂怎么办?散列和映射到索引是如何发生的?找不到任何好的引用。编辑:如何从哈希函数的结果中得到对象实际存储的内存位置? 最佳答案 哈希表或字典是一种存储键值对的数据结构。哈希表的优点是给定一个键找到对应的值是相当快的。简而言之,在哈希表中查找键值对的时间不依赖于表的大小。将其与将键值对存储在列表或数组中进行比较。要查找键值对,您必须从头开始搜索列表,直到找到匹配的键。列表越长,查找键值对所需的时间就越多。使用大O表示法,您可以说在哈希表中查找键的顺序为

c# - 保留一个 Dictionary<Type, MyClass<T>> ,其中元素可以按类型引用

我有一个名为EntityTypeTransform的抽象类,它有一个抽象方法,用于保存将IDataRecord转换为T实例的Func委托(delegate)。publicabstractclassEntityTypeTransformwhereTEntityType:class{publicabstractFuncGetDataTransform();}该类的实现可能看起来像(看起来像):publicclassTaskParameterEntityTypeTransform:EntityTypeTransform{publicoverrideFuncGetDataTransform()

c# - 为什么 Dictionary[index] 会抛出 KeyNotFoundException 但 Hashtable[index] 不会?

知道为什么这种行为不同吗? 最佳答案 这是answer.TheprimaryreasonDictionarythrowsisthatthereisno"error"valuethatworksoveranyV.Hashtableisabletoreturnnullbecausethekeyisalwaysareferencetype. 关于c#-为什么Dictionary[index]会抛出KeyNotFoundException但Hashtable[index]不会?,我们在Stack

c# - Dictionary<TKey, TValue> 是否比 List<T> 上的 LINQ 更快?

我一般用List用于收藏。但是如果我需要快速查找一个集合,那么例如在下面的示例中,我将使用字典,以便我可以通过id快速查找它:Dictionary但是因为我可以使用LINQ来查询List无论如何,如下所示,是否有任何理由去解决使用字典而不是列表的麻烦?是字典更快还是LINQ在幕后做了一些使其同样快的事情?usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]