.net CLR是否在JIT编译期间进行类似数据库的查询?

.net CLR是否在JIT编译期间进行类似数据库的查询?,.net,database,compilation,clr,jit,.net,Database,Compilation,Clr,Jit,CLR是否在JIT编译之前进行类似数据库的查询 我正在通过C#阅读CLR。我遇到了TypeDef定义表的描述: 包含模块中定义的每种类型的一个条目。每个条目都包括类型的名称, 基类型和标志(public、private等),并包含它在 MethodDef表,它在FieldDef表中拥有的字段,它在 PropertyDef表,以及它在EventDef表中拥有的事件 索引的存在使我认为,在JIT编译期间,CLR将使用TypeDef表中的非聚集索引来快速访问MethodDef、FieldDef、Pro

CLR是否在JIT编译之前进行类似数据库的查询

我正在通过C#阅读CLR。我遇到了TypeDef定义表的描述:

包含模块中定义的每种类型的一个条目。每个条目都包括类型的名称, 基类型和标志(public、private等),并包含它在 MethodDef表,它在FieldDef表中拥有的字段,它在 PropertyDef表,以及它在EventDef表中拥有的事件

索引的存在使我认为,在JIT编译期间,CLR将使用TypeDef表中的非聚集索引来快速访问MethodDefFieldDefPropertyDefEventDef中的条目。就像它发生在数据库中一样。也就是说,TypeDef中的每个条目包含4个表(因为非聚集索引是一个表)


我是否理解正确,或者索引在这里是否意味着其他内容?

大致正确。元数据经过痛苦的微优化,尽可能小。CLR不直接处理它,有一个额外的层通常由主机实现。因为它对其他工具很有用,所以它很有用。@HansPassant,谢谢。你的评论足以作为回答。