.net 4.0 什么是DLR三级缓存策略

.net 4.0 什么是DLR三级缓存策略,.net-4.0,dynamic-language-runtime,.net 4.0,Dynamic Language Runtime,我刚刚听说DLR有一个三级缓存策略。。但事实是。。一个简单的解释和简单的例子会很有帮助 感谢这就是我的理解,缓存的思想是尽可能重用表达式,以减少动态表达式求值的动态与静态开销 想象一个动态的表达式 >> a + b 然后在第一次需要创建表达式/语法树(如果不存在的话)时解决这个问题。这是那种类型的 if a is an int and not null and b is an int and not null then result = a + b 这本质上是一个可以计算的规则,

我刚刚听说DLR有一个三级缓存策略。。但事实是。。一个简单的解释和简单的例子会很有帮助


感谢

这就是我的理解,缓存的思想是尽可能重用表达式,以减少动态表达式求值的动态与静态开销

想象一个动态的表达式

>> a + b
然后在第一次需要创建表达式/语法树(如果不存在的话)时解决这个问题。这是那种类型的

if a is an int and not null and b is an int and not null then result = a + b
这本质上是一个可以计算的规则,如果为真,则可以使用表达式。因此我们有一个1级缓存

第2级类似,但更为复杂,可能大致如下:

if a is an int and not null and b is an int and not null then result = a + b
if a is string  and b is an int then do Int.Parse(a) + b
etc...
第三级更为复杂

如果找不到表达式,则会创建一个新表达式并将其添加到其中一个缓存中(尽管我对此一无所知)

据我所知,l1是1条规则,l2大约是10条规则,l3大约是100条规则

这些都是我在谷歌上读到的。 - -


还有一些我现在记不起来了。

这就是我的理解,缓存的思想是尽可能重用表达式,以减少动态表达式求值的动态与静态开销

想象一个动态的表达式

>> a + b
然后在第一次需要创建表达式/语法树(如果不存在的话)时解决这个问题。这是那种类型的

if a is an int and not null and b is an int and not null then result = a + b
这本质上是一个可以计算的规则,如果为真,则可以使用表达式。因此我们有一个1级缓存

第2级类似,但更为复杂,可能大致如下:

if a is an int and not null and b is an int and not null then result = a + b
if a is string  and b is an int then do Int.Parse(a) + b
etc...
第三级更为复杂

如果找不到表达式,则会创建一个新表达式并将其添加到其中一个缓存中(尽管我对此一无所知)

据我所知,l1是1条规则,l2大约是10条规则,l3大约是100条规则

这些都是我在谷歌上读到的。 - -

还有一些我现在想不起来了