7 Stimmen

C# ohne .NET Framework

Schnelle native Anwendungen mit API-Aufrufen usw. in einer modernen, plattformübergreifenden Programmiersprache wie C# zu schreiben, wäre doch großartig, oder? Zum Beispiel, wenn Sie ein einfaches Dienstprogramm schreiben wollen, um IT-Leuten bei der Installation von Dingen zu helfen, das keine weiteren Komponenten benötigt, in einer einfachen und modernen Programmiersprache? oder wenn Sie ein 3D-Spiel schreiben wollen, sollte es schnell sein, und JIT würde es nur langsamer machen...

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

15voto

Joel Coehoorn Punkte 377088

C# und .Net son nativer Code. Ich glaube, Sie missverstehen den JITter. Es handelt sich nicht um eine VM. Ein C#-Programm wird in vollständig nativen Code kompiliert, bevor es überhaupt ausgeführt wird.

Nun, der Teil "andere Komponenten benötigen" ist ein Problem. Aber geben Sie der Sache Zeit. Heutzutage ist es schwer, eine Windows-Installation ohne mindestens .Net 2.0 zu finden, und sogar einige Mainstream-Linux-Distributionen enthalten Mono von Haus aus.

8voto

Andrew Arnott Punkte 77359

Gehen Sie nicht davon aus, dass JIT alles langsamer macht. Das JIT kann genau für den Computer optimiert werden, auf dem die Anwendung läuft, und nicht für einen allgemeinen Computer wie einen 386er oder Pentium. Es kann bei der Codegenerierung sogar bessere Entscheidungen über den Kompromiss zwischen Geschwindigkeit und Speicher treffen, weil es genau weiß, was zur Verfügung steht. Und wenn JIT immer noch zu einer Verlangsamung führt, kann man es NGEN nennen, so dass das JIT-Tuning bereits im Vorfeld durchgeführt wird.

Als Beweis hierfür sei angeführt, dass Quake wurde auf die CLR portiert ein paar Mal, und bei meinen persönlichen Tests waren die Bilder pro Sekunde schneller wenn Quake in der Hälfte der Fälle, in denen ich es vorführe, auf der CLR läuft.

3voto

Chris Ballance Punkte 32892

Es hat sich gezeigt, dass kompilierte .NET-Programme genauso schnell laufen wie C. Wenn Sie es extrem schlank haben wollen, schreiben Sie es in Assembler für Ihren nativen Prozessor.

2voto

John K Punkte 27878

Mit dem Tool Microsoft NGEN.EXE können Sie ein natives Abbild einer .NET-Assembly erstellen. Siehe MSDN NGEN-Dokumentation . Microsoft hat bereits darüber nachgedacht, worauf Sie hier hinauswollen.

Microsoft macht auch ILMERGE.EXE Werkzeug um mehrere Assembly-Dateien zu einer einzigen zusammenzuführen. Dies könnte auch an die Grenzen der Optimierung und Geschwindigkeit gehen.

0voto

MichaelGG Punkte 9900

Nebenbei bemerkt hat Mono eine vollständige Kompilierung vor der Zeit, wodurch die Laufzeit eliminiert wird. (Ich denke, das ist, wie sie weg laufen auf iPhone, die jede JIT verbietet.)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X