Je lisais des articles sur la mise en cache et la mémoire de mémoisation et sur la manière de la mettre en œuvre facilement en utilisant des délégués et des génériques. La syntaxe était assez simple et il est étonnamment facile à mettre en œuvre, mais je me sens juste en raison de la nature répétitive qu'il devrait être possible de générer du code basé sur un attribut, au lieu de devoir écrire le même code de plomberie sur et plus.
Disons que nous commençons par l'exemple par défaut: p> et ensuite pour mémoiser ceci: p> honnêtement, je sais que cela ressemble plus à un sucre de compilateur qui devrait être converti par un préprocesseur que Génération de code réelle mais ma question est la suivante: p> merci pour toutes les idées et toutes les idées. P> update strong>: P> J'ai examiné la bibliothèque posthars comme Shay avait suggéré, et Il semblait très adapté au travail sur des applications non critiques telles que la gestion des transactions, le traçage ou la sécurité. p> Cependant, lorsque vous l'utilisez dans un contexte critique, il s'est avéré beaucoup plus lentement que le délégué. Un million d'itérations de l'exemple Fibonacci avec chaque mise en œuvre ont entraîné une roulie de 80x ralentissement. (0.012ms postSharp vs 0.00015ms délégué par appel) P> Mais honnêtement, le résultat est totalement acceptable dans le contexte dans lequel j'ai l'intention de l'utiliser. Merci pour les réponses! P> update2 strong>: p> Apparemment, l'auteur de postsharp fonctionne fort sur un La version 2.0 qui comprendra, entre autres choses, des améliorations de performance du code produit et de la compilation . p> p>
4 Réponses :
J'ai utilisé la fonction mémoire suivante dans un projet de mine: dans mon projet, je n'ai besoin que de fonctions avec un seul argument qui implémente Iequatable <ð ¢> Mais cela peut être généralisé encore plus loin.
Une autre remarque importante est que ce code n'est pas un fil sûr. Si vous avez besoin de sécurité de thread, vous devez synchroniser l'accès en lecture / écriture à la carte interne Hashtable. P> P>
Ce n'est pas ma question. Vérifiez les points de bullets en bas.
Je heurte ce Attribut Memoizer à l'aide de PostSharp p>
Cela ressemble à une très bonne alternative. Va regarder dans ça.
@Patrick, donc tu fais tout le travail difficile et je reçois les votes up :)
Pour adresser spécifiquement vos points: P>
Si vous écrivez un plugin à postSharp au lieu d'utiliser sa bibliothèque Laos, vous n'obtiendriez aucune performance. P>