Question

Écrire des applications natives rapides, avec des appels d'API, etc., dans un langage de programmation multiplateforme moderne comme C # serait génial, n'est-ce pas? Par exemple, si vous voulez écrire un utilitaire simple pour aider les informaticiens à installer des éléments qui n'auraient pas besoin de composants supplémentaires, dans un langage de programmation simple et moderne? ou si vous voulez écrire un jeu en 3D, ça devrait être rapide, et JIT le ralentirait ...

Pourquoi, pourquoi n'est-ce pas possible? Pourquoi il n'y a pas de langage de programmation moderne natif pour ces choses?

Était-ce utile?

La solution

C # et .Net sont du code natif. Je pense que vous comprenez mal le Jitter. Ce n'est pas une VM. Un programme C # est compilé en code entièrement natif avant son exécution.

Maintenant, le "besoin d'autres composants" une partie est une préoccupation. Donnez-lui du temps, cependant. Vous aurez bien du mal à trouver une installation Windows ces jours-ci sans au moins. Net 2.0, et même quelques distributions Linux traditionnelles incluent mono en sortie de boîte.

Autres conseils

Ne présumez pas que le JIT ralentit les choses. JIT peut optimiser pour l'ordinateur exécutant l'application plutôt qu'un ordinateur générique tel qu'un 386 ou un Pentium. Il peut même prendre de meilleures décisions en termes de compromis vitesse / mémoire lors de la génération de code, car il sait exactement ce qui est disponible. Et si JIT ralentit toujours les choses, vous pouvez les associer à NGEN pour que tout soit terminé avant.

Pour preuve de cela, considérez que Quake a été porté sur le CLR à quelques reprises et lors de mes tests personnels, le nombre d'images par seconde a été plus rapide lorsque Quake est exécuté environ deux fois plus sur le CLR. Je le démo.

Les programmes .NET compilés s’exécutent aussi rapidement que C. Si vous le voulez ultra-maigre, écrivez-le en assembleur pour votre processeur natif.

Vous pouvez utiliser l'outil Microsoft NGEN.EXE pour créer une image native d'un assemblage .NET. Consultez la documentation MSDN NGEN . Microsoft pense déjà à ce que vous voulez en venir.

Microsoft propose également les ILMERGE. Outil EXE pour fusionner plusieurs fichiers d'assemblage en un. Cela pourrait aussi être synonyme d'optimisation et de rapidité.

En remarque, Mono compile à l’avance, éliminant ainsi le temps d’exécution. (Je pense que c'est comme ça qu'ils s'en sortent sur un iPhone, ce qui interdit tout JIT.)

Cela signifie-t-il que nous pourrions compiler et lier entièrement un programme C # à l'aide d'appels .NET (limités) dans un fichier EXE autonome s'exécutant sans que .NET ne soit installé?

Pour info: l’analyse d’un parc de quelque 5000 serveurs a révélé environ 200 sans même .NET 2.0.

Cela pose des problèmes pour le code devant s'exécuter sur "toutes les instances Windows". Avec .NET 4.0+ n'incluant pas la version 2.0, la situation empire car les nouvelles machines ET les anciennes machines Windows risquent de ne pas disposer du "bon" .NET

il y en a, C. C peut être utilisé pour écrire n’importe quelle application, jamais !!!

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