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

本文共 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://brzmx.baihongyu.com/

你可能感兴趣的文章
给sharepoint某列表项单独赋予权限
查看>>
前端MVC框架Backbone 1.1.0源码分析(一)
查看>>
js触屏事件
查看>>
优化案例--定期归档数据
查看>>
Url Rewrite 重写
查看>>
用Qt写软件系列二:QCookieViewer(浏览器Cookie查看器)
查看>>
工作组模式下专用队列(Private Queue)如何引用远程队列路径
查看>>
ubuntu中chown设置文件权限
查看>>
即时通讯系统探究
查看>>
XFire Web Service
查看>>
[Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!...
查看>>
发布订阅者模式之C#委托实现
查看>>
linux下python版webshell后门查杀工具
查看>>
iOS中控件的Frame属性和Bounds属性的区别
查看>>
解决eclipse无法打开:Failed to load the JNI shared library
查看>>
Java 信号量 Semaphore 介绍
查看>>
构建 iOS 风格移动 Web 应用程序的8款开发框架
查看>>
invalid command-line parameter: �Hint: use '@foo' to launch a virtual错误
查看>>
flex swf和movieclip之前的微妙关系
查看>>
linux在工作中用的比较多的几个命令
查看>>