Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1960 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C# / .Net] Migration OS 32Bits vers OS 64Bits. Quid des Perfs?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C# / .Net] Migration OS 32Bits vers OS 64Bits. Quid des Perfs?

n°2106972
Yoyo@
Posté le 18-10-2011 à 15:58:51  profilanswer
 

Bonjour,
 
Nous avons migré au travail une application principalement écrite en C# / .NET et tournant sur un OS 32Bits vers un OS 64Bits, avec un changement de machine à la clef.
 
La raison pour laquelle nous l'avons faite est que cette appli fait un usage massif de mémoire cache et que les 1.6Go du process 32Bits devenaient trop courts.
 
Après migration, le code étant resté identique, je constate que l'appli est environ 25% plus lente en 64Bits qu'en 32Bits.
Bien évidemment, cette perte apparente de vitesse peut être due à une multitude de paramètres (l'appli est plutôt complexe avec beaucoup de modules), mais je me demandais si selon votre expérience, il était courant d'avoir ce genre de dégradation.
 
Merci.
 
:hello:

mood
Publicité
Posté le 18-10-2011 à 15:58:51  profilanswer
 

n°2107108
olivthill
Posté le 19-10-2011 à 11:02:48  profilanswer
 

J'avais lu que la vitesse en 32 bits et en 64 bits était grosso modo la même.
 
Donc, cette perte de 25% n'est pas hyper étonnante pour moi.

n°2107113
Yoyo@
Posté le 19-10-2011 à 11:47:47  profilanswer
 

olivthill a écrit :

J'avais lu que la vitesse en 32 bits et en 64 bits était grosso modo la même.
 
Donc, cette perte de 25% n'est pas hyper étonnante pour moi.


 
Est hyper étonnante tu veux dire?

n°2107116
olivthill
Posté le 19-10-2011 à 11:53:47  profilanswer
 

Malheureusement, je n'ai plus références exactes des tests que j'ai lus.
 
Avoir 25% de différence ne m'étonne pas vraiment. J'aurais été étonné à partir de 50% dans un sens ou dans l'autre.
 
A quoi vous attendiez-vous ?

n°2107139
Yoyo@
Posté le 19-10-2011 à 14:42:14  profilanswer
 

25% de performances en moins me paraît énorme, et on ne peut pas parler des performances similaires dans ce cas là. (ce serait la différence entre une voiture roulant à 270 km/h et une voiture roulant à 200 km/h)
 
J'aurais imaginé un Delta de 1 à 2% intuitivement.
 
Je n'arrive pas à trouver sur Internet de références sur ce sujet.

n°2107190
theshockwa​ve
I work at a firm named Koslow
Posté le 19-10-2011 à 19:05:51  profilanswer
 

25% de différences de perf, c'est considérable.
 
J'imagine que les deux points qui vont coûter chers quand on passe à du 64 bits, ce sont d'une part les pointeurs plus gros (donc structures contenant des pointeurs plus larges, sur certaines implémentations, ca peut jouer) et coût de l'appel de fonction augmenté (registres plus gros, plus nombreux, donc plus gros volume de données à empiler).
 
Pour avoir 25% d'écart de perfs, tu as peut-être un autre souci que le passage au 64 bits. Tu devrais commencer par profiler ton appli. Vérifie notamment que tu n'es pas plus souvent en train d'attendre ton disque qu'avant (on vient de faire une transition douloureuse sur les disques, avec le changement de taille des secteurs)
 
Edit : typo


Message édité par theshockwave le 19-10-2011 à 19:06:36

---------------
last.fm
n°2107231
Yoyo@
Posté le 20-10-2011 à 00:31:43  profilanswer
 

Je suis d'accord avec toi pour la taille des pointeurs plus grosse (mais je n'avais pas pensé à la taille des paramètres d'appels de fonctions, mais ça fait sens également).
 
Pour info, pour la partie processing de l'appli, tout se passe en mémoire. Il y a en fait une partie récupération de données (multisources provenant d'autres machines), qui est aussi rapide qu'avant, et une partie processing environ 25% plus lente.
 
Je vais commencer par demander à bencher les deux machines, pour m'assurer qu'il n'y a pas un processus grévant les performances sur la nouvelles machine (on ne sait jamais en entreprise...).
 
Ensuite, il faudra que je puisse effectivement descendre dans le détail de l'appli. En ce qui concerne le profiling, est ce que ce n'est pas intrusif comme processus, au point de changer totalement les performances et de rendre les différences entre les deux instances non significatives?

n°2107274
theshockwa​ve
I work at a firm named Koslow
Posté le 20-10-2011 à 11:46:12  profilanswer
 

si tu lances le même traitement sur tes deux machines (32 et 64 bits) normalement, les proportions du profiler devraient être similaires, vu que le coût du profiling sera présent des deux côtés. Du coup, il te restera juste à regarder plus précisément dans quelle(s) fonction(s) tu perds plus de temps qu'avant.
 
Tu dois assez aisément pouvoir trouver des profilers pour la plateforme .net, j'imagine.


---------------
last.fm
n°2107277
Yoyo@
Posté le 20-10-2011 à 12:00:14  profilanswer
 

theshockwave a écrit :

si tu lances le même traitement sur tes deux machines (32 et 64 bits) normalement, les proportions du profiler devraient être similaires, vu que le coût du profiling sera présent des deux côtés. Du coup, il te restera juste à regarder plus précisément dans quelle(s) fonction(s) tu perds plus de temps qu'avant.
 
Tu dois assez aisément pouvoir trouver des profilers pour la plateforme .net, j'imagine.


 
OK, très bien. il faudra que je me base sur des valeurs absolues et non pas relatives (gros %age du temps passé dans le profiler).
 
Donc, ce sera l'étape numéro deux après le bench de la machine.
 
Par contre, ce ne sera pas facile de faire accepter du profiling sur une machine de PROD, et de plus, je pense que l'analyse sera ardue, vue la profondeur dela pile d'appels (AOP, interception, multicouches, etc)
 
La question principale ici était de savoir si ces 25% étaient normaux ou pas. (selon expérience)
 
Merci.

n°2108863
TotalRecal​l
Posté le 31-10-2011 à 11:07:06  profilanswer
 

Je pense également qu'une telle variation est très surprenante.
Autant le passage en x64 occasionne une hausse de l'occupation mémoire (taille des pointeurs, structs, etc), autant au niveau temps CPU il n'est pas sensé être aussi coûteux.

 

J'ai une petite question : ton appli est full .Net, issue d'un process de build unique qui cible du x64, ou bien elle fait également de l'intéropérabilité avec du COM (PInvoke) ou des assemblies .Net tierces en x86 ?
Car l'hétérogénéité des solutions pourrait expliquer certains problèmes.

 

Pourquoi le profiling doit impérativement se faire sur la plateforme de prod, je ne saisis pas ? L'environnement n'est pas reproductible ? Dans ce cas comment vous développez ?


Message édité par TotalRecall le 31-10-2011 à 11:09:32

---------------
Topic .Net - C# @ Prog
mood
Publicité
Posté le 31-10-2011 à 11:07:06  profilanswer
 

n°2108865
Yoyo@
Posté le 31-10-2011 à 11:14:06  profilanswer
 

Hello,
 
Le build unique cible bien du x64. (je peux l'affirmer même si ce n'est pas moi qui la builde).
 
Il y a effectivement de l'interopérabilité avec du COM, mais j'ai pu cibler mes tests sur du traitement interne pur, utilisant donc uniquement des objets .NET. Au final, si je me souviens bien de la philosophie du code qui est mise en jeu, c'est beaucoup de récupération et de manipulation d'objets depuis des dictionnaires, de manipulation de chaînes de caractères (type "findstr" ) et aussi de branching ("switch/case" énorme, sous forme de tests if/then/else).
 
Je n'ai hélas pas encore eu l'autorisation de faire du profiling, et je n'ai pas encore pu obtenir de machiens tirces sur lesquelles confirmer ou infirmer cette baisse de perfs, et donc savoir si elle était liée au x64 en tant que tel ou à la machine physique.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C# / .Net] Migration OS 32Bits vers OS 64Bits. Quid des Perfs?

 

Sujets relatifs
[C#] FormView, edit/insert mode(VB.NET) Meilleure façon de gérer une liste de 230.000 lignes ?
[C] programme cherche les racines des polynomes[C] trouver la longueur de la plus longue suite decroissante en C
[Web] Serveur vers clientC++, Compter des caractères ...
Linux C/C++ broadcast UDP sur machine sans gatewayConvolution de 2 tableaux unidimensionnels avec FFTW C++
[Résolu] Net::Ping sur un port forwarding en localhosttransformation du fichier XML vers TEX avec XSLT
Plus de sujets relatifs à : [C# / .Net] Migration OS 32Bits vers OS 64Bits. Quid des Perfs?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR