Objective C / C / C++ Performance

port29

deus.Server
Hallo,

ich wollte mal nachfragen, wie die Performance von Objective C ist und ob es sich lohnt, die sich Sprache mal anzuschauen bzw. damit für Windows / Linux etwas zu Programmieren.
 
Hi.

Hier: http://shootout.alioth.debian.org/ kannst du die Performance von verschiedensten Programmiersprachen miteinander vergleichen.

Solche Vergleiche sind allerdings immer mit Vorsicht zu geniessen. Ob es eine gute Idee ist sich für eine Sprache aufgrund der Performancewerte zu entscheiden finde ich fraglich.

Gruß
 
Ob es eine gute Idee ist sich für eine Sprache aufgrund der Performancewerte zu entscheiden finde ich fraglich.

Für das aktuelle Projekt gibt es bei mir vier Entscheidungskriterien:

1) Performance
2) geringer Speicherverbrauch
3) die größe der ausführbaren Datei
4) Kosten / Nutzen Rechnung

Wenn ich für embedded Systeme etwas schreibe, dann nehme ich i.d.R. immer C oder direkt ASM. Nur hat es eben den Nachteil, dass keine OOP damit möglich ist.

Über Objective C habe ich bisher noch nichts gehört, außer dass es sehr stark auf MacOS eingesetzt wird. Deshalb habe ich jetzt nach der Performance gefragt. Denn wenn die Performance nicht stimmt, dann brauche ich mich auch um diese Sprache nicht mehr zu kümmern.
 
Du behauptest also das du performanteren ASM-Code schreibst als es dein Compiler tut? ;)

Du kannst mit den richtigen Einstellungen seeehr kleine C++-Kompilate erhalten die von der Performance her sehr gut sind. Und OOP hast de auch dabei.

Performance-Tests von Sprachen kannst du aber im Übrigen zu 90% in die Tonne werfen ...
Ach und zum Speicherverbrauch ... es kommt darauf an wie du mit dem Umgehst :D
 
Zuletzt bearbeitet:
Du behauptest also das du performanteren ASM-Code schreibst als es dein Compiler tut? ;)

Noch vor 3 Jahren hätte ich sofort Ja gesagt. Mittlerweile bin ich da nicht mehr so ganz sicher. Die Compiler heute machen doch schon recht gute Arbeit. Ich sollte evtl. mal ein Performancetest :rolleyes: machen. 1Mrd. Mal "Hello World" ausgeben. Einmal in ASM, C und mit Parallel.for() in C#.

Du kannst mit den richtigen Einstellungen seeehr kleine C++-Kompilate erhalten die von der Performance her sehr gut sind. Und OOP hast de auch dabei.

Wenn ich performance möchte, dann greife ich in C++ immer zu den boost Librarys. Nachteil ist leider immer die Dateigröße.

Ach und zum Speicherverbrauch ... es kommt darauf an wie du mit dem Umgehst :D

Da muss ich dir leider etwas widersprechen. Ich komme ursprünglich aus der Welt der Elektrotechnik. Dort habe ich die Speicherverwaltung stets selbst übernommen. Da wusste ich genau, wieviel ich verbrauche. Bei den modernen Programmiersprachen ala Java und C# entsteht mit jedem Objekt noch ein riesiger Overhead an Daten.
 
Wenn ich performance möchte, dann greife ich in C++ immer zu den boost Librarys. Nachteil ist leider immer die Dateigröße.
Naja das du damit nicht immer die beste Performance bekommst sollte dir aber klar sein. Du hast dort sehr viele Templates, in einzellnen spezialisierungsfällen könnte man aber wesentlich schnelleren Code schreiben.

Da muss ich dir leider etwas widersprechen. Ich komme ursprünglich aus der Welt der Elektrotechnik. Dort habe ich die Speicherverwaltung stets selbst übernommen. Da wusste ich genau, wieviel ich verbrauche. Bei den modernen Programmiersprachen ala Java und C# entsteht mit jedem Objekt noch ein riesiger Overhead an Daten.
War auf C++ bezogen ...
 
War auf C++ bezogen ...

Ich habe mir, ganz ehrlich, einen OOP C++ Code noch nie im Disassembler angeschaut. Aber ich vermute, dass man auch in C++ ab und zu Objekte unterschiedlicher Größe bekommt. Wenn man z.B. etwas aus einer anderen Klasse erbt.

Ich sags mal ganz ehrlich: Früher hat man versucht, den Code möglichst soweit zu optimieren, dass das Programm perfekt läuft. Heute ist alles RAD. Eben mit den entsprechenden Nachteilen. Nur deshalb haben wir heute unsere Quad Core CPUs und quasi unendlich viel Arbeits- und Festplattenspeicher.
 
Zurück