专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
今天看啥  ›  专栏  ›  dotNET跨平台

寻找性能更优秀的不可变小字典

dotNET跨平台  · 公众号  ·  · 2020-11-10 08:00
Dictionary 是一个很常用的键值对管理数据结构。但是在性能要求严苛的情况下,字典的查找速度并不高。所以,我们需要更快的方案。需求说明 这里,我们需要一个 PropertyInfo 和委托对应的映射关系,这样我们就可以存储《寻找性能更优秀的动态 Getter 和 Setter 方案》提到的委托。因此,这个字典有这些特点:这个字典一旦创建就不需要修改。字典项目并不多,因为通常一个 class 不会有太多属性。方案说明 方案 1,Switch 表达式法。使用表达式生成一个包含 switch case 语句的委托。方案 2,数组跳表。我们知道,switch case 之所以比连续的 if else 要快的原因是因为其生成的 IL 中包含一个跳表算法。因此,如果我们有办法使用连续数字作为下标,以及一个数组。就可以在 C#中 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照