Что такое стратегия трехуровневого кэширования DLR?

Я только что слышал, что DLR имеет трехуровневую стратегию кэширования. Но что это такое? Простое объяснение на простом примере будет очень полезно.

Спасибо

1 ответ

Решение

Вот как я понимаю, идея кэширования состоит в том, чтобы повторно использовать выражения везде, где это возможно, чтобы уменьшить динамические и статические издержки при оценке динамических выражений.

представьте динамическое выражение

>> 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...

Уровень 3 еще сложнее.

если выражение не может быть найдено, то новое выражение создается и добавляется в один из кешей (хотя я ничего об этом не знаю).

Насколько я понимаю, l1 - это 1 правило, l2 - около 10 правил, а l 3 - около 100 правил.

Я получил все это от прочтения темы в Google. - http://dotnetslackers.com/articles/csharp/Dissecting-C-Sharp-4-0-Dynamic-Programming.aspx - http://msdn.microsoft.com/en-us/magazine/cc163344.aspx

и некоторые другие, которые я не могу вспомнить сейчас.

Другие вопросы по тегам