2009-09-10 6 views
2

je un ensemble de .NET (3,5-cadre) et il a essentiellement un ensemble de contrôles personnalisés qui fait beaucoup de choses comme tracer des points et des trucs comme ça. L'assemblage est compilé comme 'AnyCPU' afin que je puisse l'utiliser à la fois en 32 bits et 64 bits. Quand j'ai essayé de comparer les performances d'une application qui utilise cet ensemble en 32bit et 64bit, je vois des résultats intéressants. Les performances de l'application sont composées de deux parties: L'une est l'extrémité arrière qui effectue beaucoup de calculs et de copie de données. L'autre est la partie de dessin réelle sur le contrôle. Sur la base des résultats, il semble que la première partie soit plus rapide en 32 bits et que la seconde partie soit plus rapide en architecture 64 bits. Quelqu'un peut-il expliquer ce comportement? La partie de calcul et de copie de données est plus lente en 64 bits parce que l'arithmétique en virgule flottante est plus lente en 64 bits par rapport à 32 bits?32bit vs performance 64bit

PS: Je benchmarkée l'application sur la machine AMD 64 bits avec 8 Go de RAM, avec Vista 32 bits et 64 bits installé.

Répondre

3

Si vous avez beaucoup de références d'objets dans votre partie de calcul, chaque référence occupera deux fois plus d'espace dans un CLR 64 bits, ce qui entraînera une augmentation de l'utilisation de la mémoire et donc de la récupération de place. C'est la principale différence que je peux penser, mais ils ont aussi différents JIT - il se pourrait que la partie informatique de votre application se frapper bits du JIT où la version 32 bits est mieux.

Questions connexes