44 votes

L' .NET CLR Vraiment Optimiser pour le Processeur Actuel

Quand j'ai lu au sujet de la performance de JITted langages comme C# ou Java, les auteurs disent qu'ils devraient/pourraient théoriquement surpasser la plupart des applications compilées. La théorie étant que les applications natives sont habituellement juste compilé pour un processeur de la famille (comme x86), de sorte que le compilateur ne peut pas faire certaines optimisations comme ils ne peuvent pas vraiment être optimisations sur tous les processeurs. D'autre part, le CLR peut faire de processeur optimisations spécifiques au cours du processus JIT.

Personne ne sait si Microsoft (ou Mono) CLR effectue processeur optimisations spécifiques au cours du processus JIT? Si oui, quel genre d'optimisations?

27voto

280Z28 Points 49515

De retour en 2005, David Notario la liste de plusieurs optimisations spécifiques ciblés est son entrée de blog "le JIT de profiter de mon CPU?". Je ne peux pas trouver quelque chose à propos de la nouvelle version du CLR 4, mais j'imagine que plusieurs nouveaux éléments sont inclus.

8voto

Mehrdad Afshari Points 204872

Un processeur spécifique d'optimisation, je suis conscient de cela est fait en Mono est en train de compiler Mono.Simd des appels vers le bas pour les instructions SSE sur les processeurs qui prennent en charge de l'ESS. Si le processeur exécute le code ne prend pas en charge de l'ESS, le compilateur JIT produira l'équivalent de la non-SSE code.

2voto

Henk Holterman Points 153608

Le 32 bits et 64 bits Trac sont différentes, c'est un début.

2voto

erasmus Points 395

.Net Framework Runtime Optimization Service optimise pas seulement de questions de programmation (compilateur, optimisation), mais aussi pour les transformateurs.

2voto

kvb Points 35490

Je vais souligner que la principale raison que j'entends de la cité pour le potentiel de JIT-les langages compilés à surperformer compilé statiquement langues n'a rien à voir avec le processeur des instructions spécifiques. Au lieu de cela, c'est que l'information sur la dynamique de l'état du programme peut être utilisé pour optimiser les chemins de code. Par exemple, inline mise en cache peut être utilisé pour faire virtuel appels de méthode à peu près aussi vite que les non-virtuel appels de méthode. En gros, cela fonctionne en supposant qu'à un site d'appel l'appel de la méthode sur un seul type et l'émission de code qui accède directement à la mise en œuvre (et puis réécrire le code, si cette hypothèse n'est pas née plus tard).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X