Nous migrons un projet de Visual Studio 6 (je sais) à Visual Studio 2010. Nous avons rencontré pas mal de problèmes en ayant Visual Studio faire la conversion pour nous automatiquement, nous avons donc dû le faire manuellement.C++ .dll natif plus lent sous Visual Studio 2010 par rapport à Visual Studio 6
Voici les options de ligne de commande pour les deux:
2006
/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HCR_DLL_EXPORTS" /Fp"Release/hcr_dll.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
2010
/Zi /nologo /W4 /WX- /O2 /Oy- /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "HCR_DLL_EXPORTS" /D "_WINDLL" /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Release\hcr_dll.pch" /Fa"Release\" /Fo"Release\" /Fd"Release\vc100.pdb" /Gd /wd"4996" /analyze- /errorReport:queue
Je suis passé par les options pour les deux sur this page. Il semble que la version 2010 des options de compilation permet des exceptions et que la version VC6 ne le fait pas? Peut-être que c'est la raison? Nous allons commencer à faire des benchmarks maintenant, mais il y a beaucoup de combinaisons à essayer, et nous n'avons pas beaucoup d'expérience avec ça, donc si vous pouvez regarder ça et voir la raison immédiatement, je vais vous acheter une bière au paradis .
EDIT: Je comprends pourquoi certains pourraient ne pas aimer cette question. Nous essayons actuellement d'isoler le problème et de proposer un test spécifique pour montrer la différence. Il s'agit d'un .dll hérité géant, alors j'espérais que c'était peut-être un problème évident qu'un œil expérimenté saisirait en regardant les options de compilation. Sinon, nous continuerons à travailler en essayant d'isoler le problème. Merci.
EDIT2: Je m'excuse pour la nature de cette question et suis d'accord qu'elle devrait être fermée. Nous avons triché avec les options de compilation et avons trouvé quelque chose qui a accéléré notre programme d'environ 20% par rapport à VC6. Je sais que j'aurais dû poster un code spécifique qui démontre ce point de référence, mais nous sommes sous pression, alors nous allons juste l'utiliser et ne plus le regarder pour l'instant. J'espère revenir sur cette question un peu de temps, mais compte tenu de notre emploi du temps, je n'y arriverai peut-être pas. Pour ceux qui sont intéressés, voici les options que nous utilisons maintenant.
/Z7 /nologo /W4 /WX- /O2 /Oy- /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "HCR_DLL_EXPORTS" /D "_WINDLL" /Gm- /MD /GS- /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Release\hcr_dll.pch" /Fa"Release\" /Fo"Release\" /Fd"Release\vc100.pdb" /Gd /wd"4996" /analyze- /errorReport:queue
Cette aide ne sera probablement pas en fait personne b/c ils ont aucune idée de ce que notre programme est fait, mais je pensais que je posterais néanmoins. Désolé si j'ai fait perdre beaucoup de temps à quelqu'un.
"Plus lent" est la description vraiment pas assez pour continuer. – tenfour
Montrez-nous un bloc de code spécifique que vous avez profilé et démontré est plus lent dans VS10 que dans VS6. –
Il y a eu beaucoup de temps entre 1998 (VS6) et 2009 (VS2010) ... c'est plutôt une surprise quand tout fonctionne encore que quelque chose change sa vitesse. – PlasmaHH