微软宣布即将到来的 Entity Framework 5 相比 EF4 在性能上会有 67% 的提升。
根据 ADO.NET 团队博客上的介绍,使用这个版本 EF 的应用程序之所以性能提升,要部分归功于 LINQ to Entities 查询的自动编译。自动编译功能一直都是 EF 框架中的一部分,只是需要开发人员调用 CompiledQuery.Compile 才能够使用。现在,EF 5 会自动处理这步工作:当某个查询首次运行时,它会被编译并缓存,从而使得后续请求可以避免重新完全编译。
EF 4 为 ESQL(嵌入式 SQL)查询使用了编译后的查询缓存,而 EF 5 将该功能扩展到了 LINQ to Entity 查询中。一旦缓冲中超过 800 个编译后的查询,某个回收算法将开始生效并以每分钟一次的周期清理缓存。 实体依据 LFRU(最近最早使用)原理从缓存中移除。
使用编译后的 LINQ to SQL 查询同样能够提升性能。ADO.NET 团队提到在他们的内部测试中,通过对查询参数评估方式的一些改动带来了 600% 的性能提升。
尽管.NET 交付和EF 的发布两者之间相互独立,它们还是公用了一些核心库,包括System.Data.Entity.dll、System.Data.Entity.Design.dll 和System.Web.Entity.dll。这样的好处在于使用EF 4.0 的开发人员只要升级到.NET 框架4.5 ,就应当可以体验到性能的提升。
由于EF5 中的某些新特性(如枚举支持以及空间数据类型)依赖于.NET 框架4.5 中的功能,因此在.NET 4.5 发布之前没有太多指望能使用到它们。此外,微软在本月初宣布推出了EF4.3 。
查看英文原文: Microsoft Reports Significant Performance Improvements in Entity Framework 5
评论