Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

51

21.02.2007, 23:32

Das kommt darauf an, wenn du parallel programmieren willst ist Fortran meist die bessere Variante, weil er "Schleifen unrolling" machen kann und andere kleine Optimierungen (spezielle Vektor Befehle auf Vektorrechnern benutzt falls diese verfügbar sind).

Für Desktop PC sind aber C Compiler schon recht gut.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

52

22.02.2007, 09:59

C++ compiler liefern afaik meist noch etwas besseren code als C. loop unrolling und das verwenden von vektorbefehlen gibts zum teil afaik auch bei vielen C++ compilern. zumindest der intel compiler macht das afaik teilweise (MSVC macht das mit den vektor dingen glaub ich nicht (lediglich die CRT von MSVC++ verwendet gegegentlich SIMD)).

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

53

22.02.2007, 10:07

8) k gut zu wissen ^^

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

54

22.02.2007, 10:53

Um die "Wegoptimierung" zu unterdrücken, könntest Du versuchen, ob es was bringt, die Variable j nicht mit temporärer Sichtbarkeit innerhalb der for-Schleife anzulegen, sondern persistent in der main-Funktion zu halten und dann nicht immer zu überschreiben, sondern zu akkumulieren.
Aber dafür solltest Du, wie die anderen schon sagten, wiederum den Assembler-Code anschauen.

Aber was genau willst Du denn überhaupt testen? Du willst doch nicht die Performance arithmetischer Operationen (hier Multiplikation) von C++ und C# vergleichen, sondern ihre "generelle Ausführunggeschwindigkeit", oder? Dafür musst Du natürlich auch ganz andere Anweisungen benutzen als nur sehr viele Multiplikationen. Gerade sowas wie new und delete verbraucht relativ viel "Run-Time". Arithemtische Operationen wie +, -, / und * sind absolut nichts "Krasses". Funktionsaufrufe, komplexe Mathematik, Speicherverwaltung - sowas solltest Du testen (je nach dem, was Du denn genau testen willst).

Darüber hinaus musst Du Dir vergegenwärtigen, ob die Implementationen in den verschiedenen Sprachen überhaupt signifikant vergleichbar sind. Du kannst z.B. nicht grundsätzlich davon ausgehen, dass sowas wie Methodenüberschreibungen und Up- sowie Down-Casts, new-Operatoren (oder im Gegensatz dazu Stackallokationen), Templates (oder halt Generics) etc. in den verschiedenen Sprachen 1-zu-1 vergleichbar sind. Sind sie nämlich nicht. Oder es ist genau das, was Du testen willst. Liegt halt immer dran.
Kommen Sie nie mit einem Schwert zu einer Schießerei.

55

22.02.2007, 14:06

...der Geschwindigkeitstest von Seite 1:

http://www.tommti-systems.de/go.html?htt…benchmarks.html

56

22.02.2007, 16:09

.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »FOGX« (15.09.2010, 16:10)


57

24.02.2007, 22:28

wieso sollte C# dann wahrscheinlich schneller sein. Selbst ein natives .NET wäre ja zum großteil ne gekapselte WinAPI. Deshalb ist es doch unwahrscheinlich das ein natives C# schneller wäre als ein C++ Programm!
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Werbeanzeige