QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

i4o 开源项目增强 LINQ 索引功能

  • 2018-10-30
  • 本文字数:619 字

    阅读完需:约 2 分钟

当一个 LINQ 表达式直接访问数据库时,DLINQ Provider 支持所有数据库索引。但是 LINQ 不仅会访问数据库,它还可能访问 XML 或者更简单的对象集合等。对于稍大些的查询,索引的缺失可能成为一个问题。

为了解决这个问题,Aaron Erickson 创建了一个名为 Index for Objects 或者 i4o 的产品。这个项目是开源的,可以下载下来试用。任何能增加到属性的可索引 Attribute 都应该被索引。当对象被依次放在 IndexableCollection 里时,索引就被自动创建。

在运行时情况下,当你调用 Where 和 Join 等扩展方法时,i4o 就开始起作用。它会评估表达式树,如果合适,就用一个索引查找(Index Lookup)替代 for-each 循环。

这个技术目前只在使用大型的内存对象集合的情况下才可用。在测试一个有着 100 万对象的集合时,i4o 将速度提高了差不多两个数量级。

作为一个新的项目,它还有很多的问题需要解决。有些比较简单,不久就能被实现,比如增加从集合中删除对象的支持或者支持 BindingList 等。但有些比较困难,比如在一个已被索引的集合里如何处理对象的更新。对象本身不知道它们在集合中,要给每一个被索引的类增加 INotifyPropertyChanged 支持是很无聊的,而且看上去用一些面向方面编程(AOP)技术去注入(Inject)必要的事件钩子可能是不可能实现的。

在 CodePlex 网站上此项目提供 Binary 和源代码格式下载。如果想了解更多关于 i4o 的信息或者提一些关于性能提高方面的建议,可以浏览 Aaron Erickson 的博客

查看英文原文: Indexes for LINQ

2018-10-30 16:491350

评论 1 条评论

发布
用户头像
mark
2018-11-08 22:30
回复
没有更多了
发现更多内容

在 React 中获取数据的6种方法

互联网工科生

JavaScript React Promise

龙举云兴|顶级项目 Apache InLong 核心技术探秘

腾讯云大数据

Apache

Python案例|Pandas正则表达式

TiAmo

Python pandas 数据清洗

华为云零代码新手教学-体验通过Astro Zero快速搭建微信小程序

华为云PaaS服务小智

开发者 低代码 华为云

【墨菲安全实验室】jeecg-boot/积木报表基于SSTI的任意代码执行漏洞

墨菲安全

漏洞 jeecg-boot MPS-4hzd-mb73

深入探索智能未来:文本生成与问答模型的创新融合

汀丶人工智能

自然语言处理 文本生成

九科信息成功中标中国核动力研究设计院安全自动化应用开发项目

九科Ninetech

生成式AI掀起创意革命

百度开发者中心

人工智能 文心一言

生成式AI助力中国汽车产业发展

百度开发者中心

人工智能 汽车 文心一言

生成式AI引领视频制作创新

百度开发者中心

人工智能 视频 文心一言

医疗机构过等保选择哪款堡垒机好?为什么?

行云管家

网络安全 等保 等级保护 IT运维 医疗机构

软件测试/测试开发丨Python 常用第三方库 urllib3

测试人

Python 程序员 软件测试 测试开发 urllib

什么文件传输协议才能保障跨国文件传输安全又稳定

镭速

文件传输协议 跨国文件传输

生成式AI的数据需求与保障

百度开发者中心

人工智能 文心一言

生成式AI:内容创作的新革命

百度开发者中心

三分钟上手!一文看懂 Git 的底层工作原理

高端章鱼哥

git

软件测试 |web测试—截获和修改POST请求

测吧(北京)科技有限公司

JVM关闭前做点什么

FunTester

跨国视频传输速度太慢?那是因为没有好的跨国文件传输工具

镭速

跨国传输大文件 跨国传输

中小企业数字化转型系列研究——CLM测评报告

向量智库

生成式AI:改变生活与工作的未来力量

百度开发者中心

人工智能 文心一言

软件测试 | 以编程方式对时间值进行编码

测吧(北京)科技有限公司

测试

StoneData 2.0 正式上线阿里云市场,高性能、低成本一站式实时数仓,满足用户全场景分析需求

StoneDB

MySQL 数据库 HTAP StoneDB

「你说,PC做」AIGC智能体产品化时代到来

ToB行业头条

生成式AI:游戏研发的新革命

百度开发者中心

人工智能 文心一言

软件测试 | web测试-辨别时间格式

测吧(北京)科技有限公司

测试

【墨菲安全实验室】jeecg-boot/积木报表基于H2驱动的任意代码执行漏洞

墨菲安全

网络安全 安全 漏洞 JeecgBoot MPS-bjs4-n6dm

解锁数据潜力:信息抽取、数据增强与UIE的完美融合

汀丶人工智能

人工智能 自然语言处理 信息抽取

【墨菲安全实验室】企业微信私有化2.5-2.6.93版本后台API未授权访问漏洞

墨菲安全

网络安全 安全 企业微信 漏洞分析

异常追踪频道与 IM 双向互动

观测云

可观测性用观测云 异常追踪

TDengine 全新打造数据接入功能,让 MQTT 无缝数据接入变得很简单

TDengine

时序数据库 mqtt #TDengine

i4o开源项目增强LINQ索引功能_.NET_Jonathan Allen_InfoQ精选文章