QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:491394

评论 1 条评论

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

一个Rust小白发布生产级Rust应用的进阶之路 | 得物技术

得物技术

`后端

用Golang打造高效安全金融科技后端架构

xuyinyin

DeepSeek 开源周 “王炸”:DualPipe 与 EPLB,榨干芯片算力的秘密武器

GPU算力

DeepSeek DeepSeek v3 DualPipe 流水线并行 EPLB

实测DeepSeek加成下的AI代码编程助手通义灵码2.0

小隐乐乐

AD域文件权限管理

运维有小邓

IT 运维 AD域管理 文件管理权限

超过321万个AOI(地理围栏),2025年2月更新,全国范围、全类别、同一来源、属性字段丰富的矢量面数据(AOI数据更新系列)

Geek_f9782a

AOI数据 全国AOI数据 2025年2月最新AOI数据 全国最新地理围栏 超过321万个地理围栏

中国制造+反向海淘:独立站如何靠“土特产”闷声发家?

代码忍者

vivo打造最具影响力Rust赛事,点亮基础软件事业的“蓝河时代”

脑极体

AI

F5推出业界首款应用交付与安全一体化平台,全方位赋能 AI 时代的混合多云基础架构

科技热闻

软件测试分层测试策略

测试人

40万+小时大数据训练,华为阅读重磅升级精品音色3.0

最新动态

软件测试丨Docker与虚拟机架构对比分析

测试人

WiFi 7 Solution Why Choose IPQ5322 vs. IPQ9570?

wifi6-yiyi

WiFi7

快手前端通用静态托管服务 KFX 演进历程:从崎岖土路到平坦高速

快手技术

区块链智能合约开发的优化

北京木奇移动技术有限公司

智能合约 区块链技术 软件外包公司

区块链智能合约的上线

北京木奇移动技术有限公司

智能合约 区块链技术 软件外包公司

AI与低代码平台:简化开发流程,加速数字化转型实施

天津汇柏科技有限公司

人工智能 AI 低代码 数字化转型

Vue3条件与列表渲染深度解析:实战技巧助你高效开发复杂界面

不在线第一只蜗牛

Vue

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