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

评论 1 条评论

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

不是留给飞书的时间不够,而是中国To B需要重塑时间观

B Impact

2023 年 dotnet 仓库社区年度调查已经开始

newbe36524

C#

基于Web的6个完美3D图形WebGL库

2D3D前端可视化开发

前端开发 WebGL webgl库 3d图形库 webgl框架

业务+研发=一体化管理平台?

没有用户名丶

小程序化

DawnSql构建数仓--DawnSql集群的安装

陈飞

分布式数据库 实时数仓 实时数据引擎 实时数据平台

【ECCV 2022】高效视频学习框架 EVL,CLIP 助力视频识别

Zilliz

新必应(New Bing)申请与使用教程

kcodez

聊天机器人 ChatGPT newbing 新必应

「Go框架」mvc模式:iris中的mvc包是如何将model、view、controller联系在一起的?

Go学堂

golang 开源 程序员 个人成长

DawnSql超越传统数据仓库

陈飞

分布式数据库 实时数仓 数仓 实时数据湖

重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势

极狐GitLab

DevOps 安全 DevSecOps 安全左移 供应链安全

TO B Ask100-1、2| 破解“ All in one”悖论;如何降低客户成功成本?

B Impact

无FTTR不千兆,华为星光F30让家中不再有“隐秘的角落”

脑极体

华为 宽带 光纤

java高级工程师体系课第四周作业

刘博

智慧赋能,Analysys易观宣布接入百度“文心一言”能力,共同打造数字经济智慧分析全系产品及服务

易观分析

易观新闻 易观

这些「误区」99%的研发都踩过

程序人生 职场

API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

API

李志飞回媒体“出门问问硬件和ToB业务”表现不错,将做中国 OpenAI,美国YC项目1/3已基于大模型

B Impact

飞书首次披露2022年1亿美金ARR,明确 TO B商业化立场

B Impact

《数字经济全景白皮书》金融篇:五十弦翻塞外声,金融热点领域如何实现增长?

易观分析

金融 经济

Zebec完成BNB Chain以及Near链上协议部署,多链化进程加速

鳄鱼视界

小游戏也能脱离微信运行到自己的app中

Onegun

微信小程序 小游戏 小游戏开发 微信小程序-游戏

「 Java基础-泛型 」一文说清Java泛型中的通配符T、E、K、V、N、?和Object的区别和含义

小刘学编程

Java 源码阅读 Java泛型 构架师

使用开源实时监控 HertzBeat 5分钟搞定 Linux 监控

TanCloud探云

Java GitHub 开源

docker jenkins

平凡人生

vue项目中webpack-dev-server的open和host0.0.0.0配置冲突

咖啡教室

Vue webpack

2023-02-16:两种颜色的球,蓝色和红色,都按1~n编号,共计2n个, 为方便放在一个数组中,红球编号取负,篮球不变,并打乱顺序, 要求同一种颜色的球按编号升序排列,可以进行如下操作: 交换相邻

福大大架构师每日一题

算法 rust 福大大

「推荐收藏!」【MySQL技术之旅】(4)总结和盘点优化方案系列之常用SQL的优化

码界西柚

MySQL 数据库 2月日更 优化专题

面试官:熔断和降级有什么区别?

王磊

java面试

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