簡體   English   中英

使用ExpressionVisitor是否有性能方面的考慮?

[英]Are there any performance considerations to using ExpressionVisitor?

我目前正在閱讀MSDN文章“演練:創建IQueryable LInQ提供程序”,並且ExpressionVisitor的用法很多。 ExpressionVisitor使用“訪問者”模式遍歷表達式樹。

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

在我看來,像這樣一遍遍遍遍表達式樹會提高性能。 真的嗎? 創建IQueryProvider時,我應該擔心這一點嗎?

基本上是。 表達式樹可能會變得很大,因此遍歷它們並可能由於更改而潛在地創建副本可能需要一段時間。 與SQL Server相比,LINQ to SQL和EF通常在客戶端上使用更多的CPU,因為它們過多地操縱了AST表達式。 這確實很嚴重,並且在分析器跟蹤中顯示的時間很長。

是否重要取決於您執行操作的頻率以及提供商的其他功能。 不知道還有什么要說的。 任何操作本身都不是緩慢的還是快速的。 這取決於您需要什么以及執行它的頻率。

就是說,表情訪客是一種優雅的模式,並且有自己的位置。

並不是的。 用訪問者模式解析抽象語法樹是相當標准的。 通常,在創建IQueryable提供程序時,花在解析表達式樹中少數幾個節點上的時間將與花在獲取數據上的時間完全相形見war。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM