2009-12-28 6 views
2

J'essaie de déterminer si le COM Interop devient un goulot d'étranglement dans mon logiciel. Cet article sur MSDN aide http://msdn.microsoft.com/en-us/library/ms998579.aspx#scalenetchapt15_topic11. Mais je n'ai vraiment pas de point de référence pour une valeur "normale" ou "élevée" pour le nombre de marshalling pour déterminer si cela affecte la performance. Quelqu'un peut-il me donner un seuil pour ce compteur de performance comme MSDN donne pour d'autres compteurs de performance dans l'article. Je sais que c'est une question spécifique au matériel et à l'application, mais toute aide serait appréciée.# de compteur de performance de marshalling

Répondre

1

Je ne pense pas qu'il soit possible d'indiquer un seuil spécifique pour le marshalling. C'est dépendant de l'application. Ce que vous devriez faire est de mesurer combien de temps chaque appel prend en moyenne. Ecrire une application de test qui fait simplement un tas d'appels au code non managé et l'heure. Ensuite, en utilisant le compteur "Chattiness" sur votre application, vous devriez être en mesure d'estimer le coût total des commutations entre le code géré et le code non géré.

Je devais faire exactement cela il y a quelques années. J'utilisais une DLL non managée pour lire les valeurs d'un morceau de données. J'ai mesuré les appels et je l'ai trouvé relativement cher en raison du nombre élevé d'appels, donc j'ai fait un seul appel pour récupérer le morceau de données et ensuite extrait les valeurs de ces données dans le code managé. C'était plus de travail à coder mais a fourni une augmentation de vitesse assez significative.

Questions connexes