2010-09-30 8 views
0

Je travaille sur une application en temps réel (appelons App1) qui communique avec une autre application (App2). J'ai utilisé VS2008 et les deux applications sont en C++. Récemment, j'ai converti le projet App1 en VS2010 et juste après, il a commencé à planter (j'utilise VS2010 Premium Version 10.0.30319.1). Crash dump montre que juste avant un crash, App2 essaie d'envoyer une requête à App1 plusieurs fois sans recevoir de réponse. J'ai donc pensé que la conversion d'App1 en VS2010 peut avoir un impact sur la performance et App1 a besoin de beaucoup de temps pour générer la réponse. L'utilisation de VS2010 a-t-elle un effet sur les performances (par rapport à VS2008)?Performance des applications C++ dans VS2010 et VS2008

+0

Qu'est-ce que "long time?" L'application se bloque lorsque le code est plus lent d'une microseconde? –

+1

C'est le cas. Il supporte en particulier les références rvalue et définit les constructeurs de déplacement/opérateurs d'assignation de déplacement pour les classes de la bibliothèque standard. En fonction de votre utilisation de la STL, votre programme peut fonctionner plus rapidement. – avakar

+1

Si quelque chose, je m'attends à passer à VC10 permettra d'accélérer votre application en raison de la logique d'optimisation en constante amélioration. Avez-vous d'abord cherché à voir si vous avez cassé quelque chose lorsque vous avez porté, ou avez-vous juste à droite à "Microsoft suce?" –

Répondre

6

Bien sûr, cela a "un peu" un effet sur les performances. Le compilateur est plus récent, et à bien des égards mieux.

Il est peu probable que le problème que vous rencontrez soit dû au mauvais fonctionnement du compilateur. Il est possible que vous ayez supposé que cela ne se vérifie plus sous les fonctionnalités C++ 0x introduites en 2010, mais je pense qu'il est beaucoup plus probable que vous ayez un bug dans la version VS2008. Vous devez comprendre pourquoi sa pendaison et voir ce que vous pouvez faire pour arrêter ce blocage. Il est très probable que les horaires ont été changés en utilisant 2010 et une hypothèse que vous avez faite (et vous ne devriez jamais supposer que les choses fonctionneront d'une manière spécifique ... soit savoir ou chercher) est revenue pour vous mordre dedans le cul

Probablement pas le genre de réponse que vous cherchiez bien ... mais je parierais certainement que ce soit un bug bonafide!

+0

bons points, merci, je suppose que je vais rétrograder à VS2008 et compiler et voir si elle se bloque à nouveau ou non. Si ce n'est pas le cas, cela est probablement lié à une "hypothèse". – Ahmad

+0

Personnellement, je cours 2008 et 2010 côte à côte (c'est à dire que les deux sont installés sur mon système de développement). Dès que j'en ai l'opportunité, tout mon code est en cours de mise à jour jusqu'en 2010 et je n'ai pas eu de problème jusqu'à présent (c'est pourquoi je pense que c'est un bug réel). – Goz

1

La chose à faire n'est pas deviner autour de ceci et cela.

La chose à faire est de trouver le bogue et de le réparer.

C'est compliqué avec les applications asynchrones qui se coordonnent avec le passage des messages. La façon dont je gère les tâches de ce type consiste à générer un journal horodaté détaillé du trafic de messages depuis/vers chaque application. Je prends ces journaux et les fusionne en une seule chronologie. Ensuite, j'étudie la chronologie et cherche des choses qui ne fonctionnent pas comme prévu.

Ceci est un travail. Cela peut prendre plusieurs heures et vous devrez probablement le répéter, mais vous trouverez le problème. Je suppose que vous êtes le genre de programmeur qui va s'attaquer à un travail difficile et voir à travers.

+0

Exactement; En fait, je crois qu'il faut considérer toutes les possibilités et les essayer (c'est ce que je veux dire par deviner). J'ai déjà ce journal et je peux voir où est le retard et dans quel type de message. J'ai analysé toutes les nouvelles fonctions et je n'ai trouvé aucune relation entre ce message et les nouvelles fonctions; donc ma prochaine supposition est qu'elle est causée par une sorte de changement dans les timings de 2010. Alors je suis en train de tester et si c'est le problème, je vais le réparer. – Ahmad

+0

@Ahmad: On dirait que vous savez quoi faire. Dans mon expérience "par deviner et par golly" est comme la lente route vers la Chine. S'il y a une technique de diagnostic qui me dit le problème, même si cela semble lent et fastidieux, c'est plus rapide et plus sûr que de deviner. Bonne chance. –

Questions connexes