2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

评论 1 条评论

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

vue2升级vue3:class component的遗憾

zhoulujun

@Options @Component class component

vue2升级vue3: 全局变量挂载与类型声明

zhoulujun

【网关对比】Java亿级流量架构之网关设计思路

Java全栈架构师

Java 程序员 面试 微服务 架构师

小程序与工业互联网能够相辅相成的原因

Geek_99967b

小程序 小程序开发

阿里出品!图形化的ant脚本——IDEA插件CloudToolkit

Java全栈架构师

Java 阿里巴巴 程序员 IDEA 开发工具

vue2升级vue3:this.$createElement is not a function—动态组件升级

zhoulujun

Android 修改系统屏幕亮度及监听

yechaoa

android 6月月更 Brightness

【愚公系列】2022年06月 通用职责分配原则(九)-受保护变量原则

愚公搬代码

6月月更

vue2升级vue3:webpack vue-loader 打包配置

zhoulujun

vite webpack vue-loader

SRE Lesson One -- 写给SRE新手的入门手册

耳东@Erdong

SRE SRE Lesson One

linux几个没用但是有趣的命令

入门小站

Linux

JUnit VS TestNG

FunTester

在线文本按行批量反转工具

入门小站

工具

在线JSON转HTMLTable工具

入门小站

工具

再次认识 WebAssembly

devpoint

typescript webassembly 6月月更

flutter系列之:flutter中的IndexedStack

程序那些事

flutter 程序那些事 6月月更

vue2升级vue3: Event Bus 替代方案

zhoulujun

Vue3 vue2 event bus

vue2升级vue3:TypeScript下vuex-module-decorators/vuex-class to vuex4.x

zhoulujun

vuex3

必读书籍

玄兴梦影

学习 书籍 推荐书籍

uni-app进阶之样式框架/生产环境【day10】

恒山其若陋兮

6月月更

有一说一,高并发系统设计其实一点都不难!

Java全栈架构师

Java 程序员 面试 高并发 架构设计

爆肝!阿里大佬自曝10w字Java面试核心知识手册,基础到高级足足涵盖30个技术专题

Java全栈架构师

Java spring 架构 面试 JVM

微服务测试效率治理

阿泽🧸

微服务 6月月更

Java Core 「14」J.U.C 线程池-Future & FutureTask

Samson

学习笔记 Java core 6月月更

数据治理的重要性

奔向架构师

数据治理 数据资产 6月月更

从摄影“鄙视链”说起,聊一聊XDR的安卓化之路

脑极体

盘点常见的漏洞利用方式

穿过生命散发芬芳

漏洞利用 6月月更

eureka的解析

卢卡多多

Eureka 6月月更

微博关闭发布多个兼职诈骗信息违规账号:如何打击数据造假灰产

石头IT视角

数据库每日一题---第19天:排名靠前的旅行者

知心宝贝

数据库 前端 后端 云 原生云 CTO 6月月更

SRE Lesson One -- Day2 熟练使用 Markdown

耳东@Erdong

SRE 6月月更 SRE Lesson One

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