Je viens d'entendre que le DLR a une stratégie de mise en cache à trois niveaux. Mais qu'est-ce que c'est .. Une simple explication avec un exemple simple sera très utile.Qu'est-ce que la stratégie de mise en cache à trois niveaux DLR
Merci
Je viens d'entendre que le DLR a une stratégie de mise en cache à trois niveaux. Mais qu'est-ce que c'est .. Une simple explication avec un exemple simple sera très utile.Qu'est-ce que la stratégie de mise en cache à trois niveaux DLR
Merci
Voici comment je comprends bien, l'idée de la mise en cache est de réutiliser des expressions chaque fois que possible pour réduire la dynamique vs statique frais généraux de l'évaluation de l'expression dynamique.
imaginer une expression dynamique
>> a + b
travail Puis ce la première fois une expression/arbre de syntaxe devra être créé (si l'on n'existe pas). Ceci est du type
if a is an int and not null and b is an int and not null then result = a + b
Ceci est essentiellement une règle qui peut être évaluée et si elle est vraie, l'expression peut être utilisée. Nous avons donc un cache de niveau 1.
Niveau 2 est simillar mais une règle plus complexe, probablement le long des lignes de:
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...
Le niveau 3 est encore plus complexe.
Si aucune expression ne peut être trouvée, une nouvelle expression est créée et ajoutée à l'un des caches (bien que je ne sache rien à ce sujet). Si je comprends bien, il est 1 règle, l2 est d'environ 10 règles et l3 est d'environ 100 règles.
J'ai tout compris en lisant le sujet sur google. - http://dotnetslackers.com/articles/csharp/Dissecting-C-Sharp-4-0-Dynamic-Programming.aspx - http://msdn.microsoft.com/en-us/magazine/cc163344.aspx
et d'autres dont je ne me souviens pas maintenant.