博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
i4o开源项目增强LINQ索引功能
阅读量:6471 次
发布时间:2019-06-23

本文共 681 字,大约阅读时间需要 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网站上此项目提供下载。如果想了解更多关于i4o的信息或者提一些关于性能提高方面的建议,可以浏览。

\
查看英文原文:

转载地址:http://tevko.baihongyu.com/

你可能感兴趣的文章
SVN服务器使用(二)
查看>>
反射获取内部类以及调用内部类方法
查看>>
App里面如何正确显示用户头像
查看>>
DATAGUARD维护:从库宕机后如何恢复到管理恢复模式
查看>>
U-BOOT之一:BootLoader 的概念与功能
查看>>
我的路上
查看>>
Velocity处理多余空白和多余空白行问题
查看>>
java值传递
查看>>
DB2与oracle有什么区别
查看>>
创建一个多级文件目录
查看>>
Picasa生成图片幻灯片页面图文教程
查看>>
js获取当前时间的前一天/后一天
查看>>
黄聪:PHP 防护XSS,SQL,代码执行,文件包含等多种高危漏洞
查看>>
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
Security updates and resources
查看>>
深入理解JavaScript系列(25):设计模式之单例模式
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>