首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ExpressionVisitor有什么性能方面的考虑吗?

使用ExpressionVisitor有什么性能方面的考虑吗?
EN

Stack Overflow用户
提问于 2013-02-03 06:16:48
回答 2查看 288关注 0票数 0

我目前正在阅读MSDN的文章“演练:创建IQueryable LInQ提供程序”,其中有很多ExpressionVisitor的用法。ExpressionVisitor使用访问者模式遍历表达式树。

http://msdn.microsoft.com/en-us/library/bb546158.aspx

在我看来,像这样一遍又一遍地遍历表达式树的性能代价很高。这是真的吗?在创建我的IQueryProvider时,我应该关注这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-03 06:29:45

基本上是这样的。表达式树可能会变得非常大,因此遍历它们并可能由于更改而创建副本可能需要一段时间。与SQL Server相比,LINQ to SQL和EF通常在客户端使用更多的CPU,因为它们过度操作表达式AST。它真的很严重,并且在分析器跟踪中显示了很长时间。

它是否重要取决于你做它的频率和你的提供者做的其他事情。不知道还能说什么。没有任何操作本身就是慢或快的。这取决于您需要什么以及执行它的频率。

也就是说,expression访问者是一种优雅的模式,有自己的位置。

票数 1
EN

Stack Overflow用户

发布于 2013-02-03 06:30:50

不怎么有意思。使用访问者模式解析抽象语法树是非常标准的。通常,在创建IQueryable提供程序时,解析表达式树中的几个节点所花费的时间与获取数据所花费的时间相比将完全相形见绌。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14667106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档