写点什么

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

评论 1 条评论

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

架构师训练营 1 期 - 第三周总结(vaik)

行之

极客大学架构师训练营

SQL 是什么

Rayjun

sql

区块链治理为什么如此重要?

CECBC

区块链

架构师训练营第 1 期第三周总结

Leo乐

极客大学架构师训练营

基于链表的有界阻塞队列 —— LinkedBlockingQueue

程序员小航

Java 源码 AQS 源码阅读 LinkedBlockingQueue

学习笔记:架构师训练营-第一周

四夕晖

4+1架构视图 通用设计模型

架构师训练营第 1 期第三周课后练习题

Leo乐

极客大学架构师训练营

2020.09.28-2020.10.04 学习总结

icydolphin

极客大学架构师训练营

发展区块链技术 打造竞争新优势

CECBC

架构师训练营第三周作业

四夕晖

设计模式 极客大学架构师训练营

央行数字货币渐行渐近:未来金融竞争终极场所

CECBC

数字货币 银行

学习笔记:架构师训练营-第三周

四夕晖

设计模式 OOD

单例设计模式之枚举实现

A p7+

架构师训练营第三周作业

xs-geek

极客大学架构师训练营

组合设计模式编写程序

石头

极客大学 极客大学架构师训练营

【架构师训练营第 1 期 03 周】 作业

Bear

极客大学架构师训练营

Mac 配置环境变量未生效

hepingfly【gzh:和平本记】

Mac 环境变量 配置文件不生效

3.手写单例模式设计

博古通今小虾米

面试官:开发过Maven插件吗?我:开发过啊。。。

冰河

maven 插件开发 互联网工程

Linux安装软件方法总结

MySQL从删库到跑路

Linux 源码 RPM安装 安装 yum

CSS 选择器 — 重学CSS

三钻

CSS 大前端

架构师训练营 1 期 -- 第三周作业

曾彪彪

极客大学架构师训练营

架构师训练营第三周课程笔记及心得

Airs

架构师训练营第一周作业

四夕晖

架构师训练营第三周总结

xs-geek

极客大学架构师训练营

架构师训练营第 1 期 - 第三周作业提交

Todd-Lee

极客大学架构师训练营

编程的本质和未来

小宋头

架构师训练营 1 期 - 第三周作业(vaik)

行之

极客大学架构师训练营

[架构师训练营第 1 期] 第三周命题作业

猫切切切切切

极客大学架构师训练营

[架构师训练营第 1 期] 第三周学习总结

猫切切切切切

极客大学架构师训练营

第三周-代码重构-作业

刘希文

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