Delphi-PRAXiS
Seite 8 von 10   « Erste     678 910      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   c++ vs delphi (https://www.delphipraxis.net/43452-c-vs-delphi.html)

mirage228 7. Apr 2005 18:23

Re: c++ vs delphi
 
Hi,

mir hat sich hier beim Lesen eine Frage gestellt, die ggf. OT ist:

Was passiert eigentlich, wenn man einen Code mit SSE(2), MMX, etc. Befehlen schreibt und dieser auf einem Prozessor ohne dieses Feature ausgeführt wird? Das wäre mal sone Sache die mich interessieren würde...

mfG
mirage228

NicoDE 7. Apr 2005 18:26

Re: c++ vs delphi
 
Zitat:

Zitat von mirage228
Was passiert eigentlich, wenn man einen Code mit SSE(2), MMX, etc. Befehlen schreibt und dieser auf einem Prozessor ohne dieses Feature ausgeführt wird?

EInvalidOpCode :)
(aber bei aktuellen Spielen setzt man einfach einen P4-kompatiblen Prozessor voraus...)

tommie-lie 7. Apr 2005 18:28

Re: c++ vs delphi
 
Zitat:

Zitat von TheAn00bis
Ja, mir war klar, dass es so gut wie keine Grafikengine für Delphi zu kaufen gibt.

Nuja, zu kaufen vielleicht nicht, aber die Quake2-Engine wurde mal nach Delphi portiert: http://www.sulaco.co.za/quake2/

Zitat:

Zitat von TheAn00bis
Was bedeutet denn Codeoptimierung eigentlich? Natürlich kann ich mir was darunter vorstellen, dass der compilierte Assemblercode so effektiv wie möglich gestalltet ist. Aber macht das so viel aus?

ID3v2-Tags benutzen ein 28bit-Integer-Format, bei dem in jedem Byte das höchstwertige Bit immer auf 0 gesetzt ist (und zusätzlich noch im Gegensatz zu Intel-Prozessoren auch noch das MSB als erstes im Datenstrom lag). Ein einfaches Auslesen war also nicht möglich, eine Konvertierungsfunktion musste her. Meine reine Pascal-Implementierung (eine Codezeile, reine Integerarithmetik, ausschließlich ANDing, Shifting und ORing, also eigentlich eine recht popelige Aufgabe) habe ich um mehr 30% beschleunigt, indem ich sie in Assembler neu geschrieben habe. Zugegeben, diese Funktion wird nur ein paar Mal aufgerufen und die Anwendung selbst ist ja auch alles andere als geschwindigkeitskritisch, aber ich war jung und brauchte das Geld ;-)
Der Delphi-Compiler (ich weiß nicht, ob's der ICC besser gemacht hätte) produziert nicht immer optimalen Code (schon allein weil der Compiler manchmal nichts über die Anwendung weiß und keine Annahmen über die Umgebung machen kann, von daher ist jeder Compiler noch weiter optimierbar für spezielle Anwendungen) und bei kritischen Funktionen kann eine Handoptimierung durchaus noch etwas bringen.

Robert_G 7. Apr 2005 19:49

Re: c++ vs delphi
 
Wirklich krasse Unterschiede beim Otptimieren bemerkt man beim Debugging von .Net Apps.

Wenn du zum Bleistift durch eine Collection mit nur 5 Elementen iterierst wird sich der JIT nicht viel Mühe geben um möglichst optimalen Code zu generieren.
Jetzt führe die gleiche Methode mit 10000 Elementen aus. Der ASM Code hat sich geändert, da er jetzt rausholt was er nur kann. :shock:

Wobei es wieder fies ist JITs einer VM mit einem normalen Compiler zu vergleichen. ;) (wäre für beide Seiten ungerecht)
Wollte es nur als krasses Beispiel erwähnen. :mrgreen:

MagicAndre1981 7. Apr 2005 20:03

Re: c++ vs delphi
 
Zitat:

Zitat von NicoDE
Zitat:

Zitat von mirage228
Was passiert eigentlich, wenn man einen Code mit SSE(2), MMX, etc. Befehlen schreibt und dieser auf einem Prozessor ohne dieses Feature ausgeführt wird?

EInvalidOpCode :)
(aber bei aktuellen Spielen setzt man einfach einen P4-kompatiblen Prozessor voraus...)

Wie jetzt? Es wird ein P4 kompatibler Prozzi vorausgesetzt. Dann dürfte ein Spiel nur auf Prozessoren laufen, die SSE2 haben. Aber ich kann mit meinen AthlonXP 2400+ trotzdem spielen ohne SSE2.

Zum Thema:
Der Intel C++ Compiler bietet die Möglichkeit, Code für verschiede Prozzitypen zu schreiben.

André

tommie-lie 7. Apr 2005 20:11

Re: c++ vs delphi
 
Zitat:

Zitat von MagicAndre1981
Wie jetzt? Es wird ein P4 kompatibler Prozzi vorausgesetzt. Dann dürfte ein Spiel nur auf Prozessoren laufen, die SSE2 haben. Aber ich kann mit meinen AthlonXP 2400+ trotzdem spielen ohne SSE2.

Dann setzen deine Spiele vielleicht nicht zwingend SSE2 vorraus ;-)

Robert_G 7. Apr 2005 20:18

Re: c++ vs delphi
 
Zitat:

Zitat von tommie-lie
Zitat:

Zitat von MagicAndre1981
Wie jetzt? Es wird ein P4 kompatibler Prozzi vorausgesetzt. Dann dürfte ein Spiel nur auf Prozessoren laufen, die SSE2 haben. Aber ich kann mit meinen AthlonXP 2400+ trotzdem spielen ohne SSE2.

Dann setzen deine Spiele vielleicht nicht zwingend SSE2 vorraus ;-)

Macht auch keins, Nico meinte wohl P3-kompatibel. Sonst hätten die ganzen "nicht ganz so aktuellen" ( :mrgreen: ) 32 Bit AMDs schon lange in die Röhre gekiekt. :lol:

mael 7. Apr 2005 21:22

Re: c++ vs delphi
 
Zitat:

Wie jetzt? Es wird ein P4 kompatibler Prozzi vorausgesetzt. Dann dürfte ein Spiel nur auf Prozessoren laufen, die SSE2 haben. Aber ich kann mit meinen AthlonXP 2400+ trotzdem spielen ohne SSE2.
Es gibt dann mehrere Echsen (plural von EXE :cyclops:) jede für einen bestimmten Prozessortyp.
Andere Möglichkeit ist optimierte Bereiche für mehrere Prozessoren zu schreiben und mit Hilfe von CPUID den richtigen Code zur Laufzeit auszuwählen.

Zitat:

Zitat von MagicAndre1981
Zum Thema:
Der Intel C++ Compiler bietet die Möglichkeit, Code für verschiede Prozzitypen zu schreiben.

Und optimiert auch ganz normalen C++ Code für den Ziel-Prozessor ohne daß man was anpassen müßte.

MagicAndre1981 7. Apr 2005 21:46

Re: c++ vs delphi
 
Zitat:

Zitat von mael
Zitat:

Wie jetzt? Es wird ein P4 kompatibler Prozzi vorausgesetzt. Dann dürfte ein Spiel nur auf Prozessoren laufen, die SSE2 haben. Aber ich kann mit meinen AthlonXP 2400+ trotzdem spielen ohne SSE2.
Es gibt dann mehrere Echsen (plural von EXE :cyclops:) jede für einen bestimmten Prozessortyp.
Andere Möglichkeit ist optimierte Bereiche für mehrere Prozessoren zu schreiben und mit Hilfe von CPUID den richtigen Code zur Laufzeit auszuwählen.

Zitat:

Zitat von MagicAndre1981
Zum Thema:
Der Intel C++ Compiler bietet die Möglichkeit, Code für verschiede Prozzitypen zu schreiben.

Und optimiert auch ganz normalen C++ Code für den Ziel-Prozessor ohne daß man was anpassen müßte.

Jupp, der Intel C++ Complier ist schon geil :thumb: :thumb:

Mephistopheles 7. Apr 2005 23:34

Re: c++ vs delphi
 
Zitat:

Zitat von mael
Was die Unicode-Sache angeht, es gibt WideString, was also soll das Beispiel?

Was soll der Kommentar?
Dir ist schon klar, was die UNICODE_STRING-Struktur ist? Hier mal der Typ in Delphi:
Delphi-Quellcode:
type
  UNICODE_STRING = record
    Length: Word;       // Länge in Bytes, immer gerader Wert
    MaximumLength: Word; // Maximale Länge in Bytes, immer gerader Wert
    Buffer: PWideChar;
  end;
... und jetzt bin ich mal gespannt, wie exakt du das mit einem WideString lösen willst, ohne vor der Übergabe einer UNICODE_STRING-Struktur jedesmal rumzupfriemeln. Präprozessor-Makros gibt es neben Operator-Overloading auch nicht bei Delphi.

Außerdem kann man in C++ Klassen wie Stackvariablen benutzen - will heißen, wenn "out-of-scope" wird die Klasse freigegeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 Uhr.
Seite 8 von 10   « Erste     678 910      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz