C # ohne .NET Framework

7

Das Schreiben schneller nativer Anwendungen mit API-Aufrufen usw. in einer modernen plattformübergreifenden Programmiersprache wie C # wäre großartig, oder? Zum Beispiel, wenn Sie ein einfaches Hilfsprogramm schreiben möchten, um IT-Benutzern zu helfen, Dinge zu installieren, die keine anderen Komponenten benötigen, in einer einfachen und modernen Programmiersprache? oder wenn Sie ein 3D-Spiel schreiben möchten, sollte es schnell sein, und JIT würde es nur langsamer machen ...

Warum, warum ist das nicht möglich? Warum gibt es für diese Dinge keine modernen Programmiersprachen?

    
Alon Gubkin 24.10.2009, 02:39
quelle

7 Antworten

15

C # und .Net sind nativer Code. Ich glaube, du verstehst das JITter falsch. Es ist keine VM. Ein C # -Programm wird vollständig in nativen Code kompiliert, bevor einer davon ausgeführt wird.

Jetzt ist der Teil "andere Komponenten benötigen" ein Problem. Gib es doch Zeit. Sie werden schwer zu finden, eine Windows-Installation in diesen Tagen ohne mindestens. NET 2.0, und sogar ein paar Mainstream-Linux-Distributionen enthalten mono out of the box.

    
Joel Coehoorn 24.10.2009, 02:48
quelle
7

Gehen Sie nicht davon aus, dass der JIT die Dinge langsamer macht. Das JIT kann für den exakten Computer optimieren, der die Anwendung ausführt, und nicht für einen generischen Computer wie 386 oder Pentium. Bei der Codeerstellung können sogar bessere Kompromisse bei Geschwindigkeit und Speicherabwägung getroffen werden, da genau bekannt ist, was verfügbar ist. Und wenn JIT die Dinge immer noch langsamer macht, können Sie sie NENNEN, so dass JITTING alles vorher erledigt wird.

Bedenkt das als Beweis dafür, Quake wurde mehrmals in die CLR portiert , und in meinen persönlichen Tests waren die Frames pro Sekunde schneller , wenn Quake etwa zur Hälfte der Demo-Zeit läuft.

    
Andrew Arnott 24.10.2009 02:58
quelle
3

Kompilierte .NET-Programme laufen nachweislich genauso schnell wie C. Wenn Sie Ultra-lean schreiben wollen, schreiben Sie es in Assembly für Ihren nativen Prozessor.

    
Chris Ballance 24.10.2009 02:51
quelle
2

Sie können das Microsoft NGEN.EXE-Tool verwenden, um ein systemeigenes Abbild einer .NET-Assembly zu erstellen. Siehe MSDN NGEN-Dokumentation . Microsoft hat schon darüber nachgedacht, worauf du hier hinauskommst.

Microsoft macht auch ILMERGE.EXE-Tool um mehrere Assembly-Dateien zu einer zusammenzufassen. Dies könnte auch an Optimierung und Geschwindigkeit anknüpfen.

    
John K 24.10.2009 02:56
quelle
0

Als eine Randnotiz hat Mono das Compilieren vor der Zeit voll im Griff und eliminiert die Laufzeit. (Ich denke, dass sie so auf dem iPhone laufen, was JIT verbietet.)

    
MichaelGG 26.10.2009 09:52
quelle
0

Bedeutet dies also, dass wir ein C # -Programm vollständig kompilieren und verknüpfen können, indem Sie (begrenzte) .NET-Aufrufe in eine eigenständige EXE-Datei einfügen, die ohne .NET läuft?

Zu Ihrer Information: Bei der Überprüfung eines Serverstandes von etwa 5000 Servern wurden etwa 200 ohne .NET 2.0 gefunden.

Dies verursacht Probleme für Code, der auf "allen Windows-Instanzen" ausgeführt werden muss. Mit .NET 4.0 und nicht mit 2.0 wird dies noch schlimmer, da sowohl neue als auch alte Windows-Rechner möglicherweise nicht das "richtige" .NET haben     

HerbM 25.04.2013 16:15
quelle
-3

gibt es, C. C kann verwendet werden, um jede Anwendung zu schreiben, immer !!!

    
Andrew Keith 24.10.2009 02:44
quelle