Laden...

Ist es schneller, bestimmte Operationen in C++ zu schreiben und dies per C# aufzurufen?

Erstellt von RaphaelH vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.181 Views
R
RaphaelH Themenstarter:in
65 Beiträge seit 2011
vor 12 Jahren
Ist es schneller, bestimmte Operationen in C++ zu schreiben und dies per C# aufzurufen?

Hallo zusammen,

C++ ist denke ich ja schneller als C# da unmanaged und so..

Aber ich frage mich, wäre es immernoch schneller einige Sachen in C++ zu machen und dies per C# aufzurufen?

Also z.b. SQL Abfragen über C++ Dll auszuführen.

5.742 Beiträge seit 2007
vor 12 Jahren

C++ ist denke ich ja schneller als C# da unmanaged und so..

Das hängt ausschließlich vom Können des Programmierers ab; theoretisch lässt sich C++ Code jedoch weitaus tiefergehend optimieren.

Aber ich frage mich, wäre es immernoch schneller einige Sachen in C++ zu machen und dies per C# aufzurufen?

Wenn man es richtig macht: Ja.

Also z.b. SQL Abfragen über C++ Dll auszuführen.

Du hast selber eine SQL-Datenbankengine geschrieben?
Wenn nicht, ist der Datenbankcode sowieso meist in C++ geschrieben und entsprechend optimiert. Wie das SQL zur Datenbank gelangt, ist dann recht unerheblich.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo RaphaelH,

solche Threads haben leider die Eigenschaft in unnötige Glaubenskriege auszubrechen. Außerdem haben wir das schon oft im Forum besprochen. Deshalb nur kurz:

Erstmal stimmt schon deine Grundannahme nicht. Managed Code ist wegen des JITs üblicherweise nicht (merklich) langsamer als unmanaged Code, manchmal sogar schneller.

Das wichtigste ist aber: "premature optimization is the root of all evil". Bevor du also ans Auslagern von irgendwas denkst, musst du erstmal schauen, ob es überhaupt einen Engpass gibt und wenn ja, wo dieser liegt. Erst dann kann man sich Gedanken darüber machen, wie man diesen konkreten Engpass am besten behebt. Üblicherweise bringt die Umstellung des Algorithmus (z.B. vermeiden von Schlemiel the Painter's algorithm) viel mehr, als einzelne (C#-)Operationen durch möglicherweise etwas schnellere (C++-)Operationen zu ersetzen.

herbivore

T
25 Beiträge seit 2011
vor 12 Jahren

Hallo,

man kann sich herbivore's Ausführungen nur anschließen.

Ein Beispiel, dass managed code kein Nachteil sein muss.
Raytracing auf der Java-Plattform 100% Java
und das ganze mit eine Tempo, wo andere erst einmal mit kommen müssen.

Gruß, Thomas