據我所知,Roslyn的預發佈版本實現了Eric Lippert在this excellent blog post中描述的不可變樹。然而,這篇文章的結尾是:Roslyn的發佈版本如何實現不可變樹?
「成本是這個系統很複雜,如果紅色外牆變大,會消耗大量內存。我們目前正在做實驗,看看是否可以減少一些成本不會失去好處。「
我想問一下發布版本的結果是什麼。我已經開始檢查Roslyn sources,但代碼相當複雜。
我感興趣的是關於上述成本的低級設計結果。
- 根據紅色/綠色節點進行單個編輯的成本是多少?
- 對其他操作進行了哪些優化(例如刪除,撤銷)?
我認爲使用這個更容易:http://source.roslyn.codeplex.com/#Microsoft.CodeAnalysis/Syntax/SyntaxNode.cs,849dc6029695ef7b – MarcinJuraszek 2014-09-21 20:06:32
也可以看一看[BCL immutable collections]( http://channel9.msdn.com/posts/Erik-Meijer-Immo-Landwerth-and-Andrew-Arnott-Immutable-Collections-for-NET)的靈感來自Roslyn紅/綠樹。 – DaveShaw 2014-09-21 20:21:00
@DaveShaw,我快速瀏覽了鏈接,並會觀看視頻。然而,描述頁面沒有提及樹,但它確實提到了許多其他的集合類型。 – bright 2014-09-21 20:23:39