Question

Je me prépare à écrire un logiciel de simulation photoniques qui fonctionnera sur un cluster Linux et Windows 128 nœuds, avec un client basé sur Windows pour la conception d'emplois (CAD-like) et de les soumettre à la grappe.

La plupart de ce terrain est bien foulé, mais je suis curieux de voir comment C # empile jusqu'à C ++ en termes de capacité réelle crissement nombre. Je suis très à l'aise avec les deux langues, mais je trouve le modèle d'objet supérieur et de soutien cadre de C # .NET ou Mono incroyablement séduisant. Cependant, je ne peux pas, avec cette application, sacrifiez trop la puissance de traitement pour des raisons de préférence des développeurs.

Est-ce que quelqu'un a une expérience dans ce domaine? Y a-t-il des repères difficiles disponibles? Je suppose que le code de la machine finale sera optimisé en utilisant les mêmes techniques que ce soit provient d'un C # ou source de C, d'autant plus que cela prend généralement place au pcode / niveau IL.

Était-ce utile?

La solution

Les techniques d'optimisation utilisées par C # et C ++ natif sont très différents. C # compilateurs émettent IL, qui est à peine optimisé puis JIT'ed au code binaire quand il est sur le point d'exécuter pour la première fois. La plupart des travaux d'optimisation se produit à l'intérieur du compilateur JIT.

Cela a des avantages et des inconvénients. JIT a des budgets de temps, ce qui limite la quantité d'efforts qu'il peut dépenser sur l'optimisation. Mais il a aussi une connaissance intime du matériel, il est en fait en cours d'exécution, donc il peut (en théorie) faire une utilisation transparente des opcodes CPU plus récentes et les connaissances détaillées des données de performance comme une base de données de risques de pipelines.

Dans la pratique, je ne sais pas comment ce dernier est significatif. Je sais que au moins Mono paralléliser certaines boucles automatiquement si elle se trouve en cours d'exécution sur un CPU avec SSE (SSE2, peut-être?), Qui peut être un gros problème pour votre scénario.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top