HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

评论 1 条评论

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

行业落地呈现新进展 | 2022 开放原子全球开源峰会 OpenAtom OpenHarmony 分论坛圆满召开

kk-OSC

开放原子全球开源峰会

产学研用 共建开源人才生态 | 2022 开放原子全球开源峰会教育分论坛圆满召开

kk-OSC

开放原子全球开源峰会

语音聊天app——如何规范开发流程?

开源直播系统源码

软件开发 直播系统源码 语音聊天系统

新闻速递 | MobTech袤博科技参与中国信通院“绿色SDK产业生态共建行动”

MobTech袤博科技

数据安全 sdk

开源汇智创未来 | 2022 开放原子全球开源峰会 OpenAtom openEuler 分论坛圆满召开

kk-OSC

开放原子全球开源峰会

不用Swagger,那我用啥?

江南一点雨

Linux操作系统下Docker的完整部署过程

Java永远的神

Docker 程序员 架构 程序人生 云原生

本地化、低时延、绿色低碳:阿里云正式启用福州数据中心

阿里云弹性计算

公有云 本地Region

什么是WordPress

hum建应用专家

Wordpress 博客部署 WordPress

开源社区三十年 | 2022 开放原子全球开源峰会开源社区三十年专题活动圆满召开

kk-OSC

开放原子全球开源峰会

《我的Vivado实战—单周期CPU指令分析》

攻城狮杰森

cpu 计算机组成原理 7月月更 vivado 计算机科学与技术

API 网关 APISIX 在Google Cloud T2A 和 T2D 的性能测试

API7.ai 技术团队

网关 API Gateway 谷歌云 网关性能测试

JAVA编程规范之应用分层

源字节1号

软件开发 前端开发 后端开发 小程序开发

疫情期间佩戴口罩检测之训练检测口罩模型算法实现口罩检测步骤以及报错解决

南蓬幽

Python AI OpenCV 7月月更

论治理与创新 | 2022 开放原子全球开源峰会 OpenAnolis 分论坛圆满召开

kk-OSC

开放原子全球开源峰会

备战金九银十,Java研发面试题整理PDF,走到哪刷

程序知音

Java 程序员 java面试 后端技术 八股文

要想组建敏捷团队,这些方法不可少

敏捷开发

团队管理 敏捷开发 敏捷团队

什么样的知识付费系统功能,更有利于平台与讲师发展?

CRMEB

18张图,直观理解神经网络、流形和拓扑

OneFlow

神经网络 深度学习

OpenAtom OpenHarmony分论坛圆满举办,生态与产业发展迈向新征程

OpenHarmony开发者

OpenHarmony

巧用ngx_lua做流量分组

转转技术团队

nginx

苹果手机iCloud钥匙串的加密缺陷

神锁离线版

apple 密码管理 密码技术 icloud keychain

数字经济时代的开源数据库创新 | 2022 开放原子全球开源峰会数据库分论坛圆满召开

kk-OSC

开放原子全球开源峰会

易观分析:以用户为中心提升手机银行用户体验,助力用户价值增长

易观分析

数据分析 用户体验 手机银行

华为发布HarmonyOS 3及全场景新品,智慧体验更进一步

Geek_2d6073

Qt | 信号和槽的一些总结

YOLO.

qt 7月月更

谈谈基于JS实现阻止别人调试通过控制台调试网站的问题

南极一块修炼千年的大冰块

7月月更

定了!就在7月30日!

腾源会

开源

精品方案|海泰方圆全栈式数据安全治理方案 为数据设一把“安全锁”

电子信息发烧客

聚变云原生,赋能新里程 | 2022 开放原子全球开源峰会云原生分论坛圆满召开

kk-OSC

分布式定时器

腾讯企点技术团队

redis 分布式 定时器

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