2009-12-13 1 views
6

J'ai pris une application développée dans Visual Studio 2008 et utilisée avec diverses bibliothèques Office via COM Interop. J'ai commencé le développement de preuve de concept en utilisant le mot-clé dynamique et Visual Studio 2010. J'ai trouvé que l'exécution des mêmes tâches est d'environ 5 à 10 fois plus lente en utilisant la dynamique que la "vieille" manière. Quelqu'un d'autre a-t-il connu ce niveau de dégradation des performances? Est-ce connu ou devrais-je trouver un moyen de signaler cela?C# 4.0 dynamique interopérabilité bureautique

Répondre

1

Oui, il existe un performance avec le mot-clé dynamic. La raison en est qu'il doit encadrer les valeurs dans le type object, puis utiliser le DLR (une fois) pour le compiler et l'évaluer. Cela prendra plus de temps sur le processeur que si le type était connu. Vous pouvez voir la réponse acceptée sur ce question pour une description plus détaillée. Enfin, dans votre cas, ce serait encore pire, car il s'agit déjà d'un objet COM, de sorte que la boxe et le déballage de cet objet au-dessus du préfixe COM vont être exagérés.