-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
2. Dez 2019
Vergesst .NET Native - das verursacht mehr Probleme als es löst.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
28. Nov 2019
Ja, dämliche Benchmarks findet man auch bei Delphi/FreePascal Entwicklern, diese zum Beispiel.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
27. Nov 2019
Danke für diesen wertvollen Beitrag. Ich finde auch, dass man mit Delphi mit am besten Windows Desktop Anwendungen erstellen kann.
Das macht aber den erzeugten Code des Delphi Compilers nicht besser, den man nun mal auch für andere Anwendungen benutzen kann, wo es auf optimale Nutzung aktueller Hardware ankommt.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
27. Nov 2019
Kann ich aus den Schnipseln bei mir nicht reproduzieren - und ich geh mal davon aus, dass dein Init static ist, ansonsten wirds eh schwierig, sie aus der static void Main aufzurufen.
Edit: Ah, doch jetzt - ich vermute einfach mal, je nach Konstellation wird man hier bei x86 Opfer von Register Pressure - als x64 läufts immernoch schnell.
Meine Aussage steht aber immernoch obwohl es Situationen...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
22. Nov 2019
Es soll auch Softwarebereiche geben, die CPU und nicht IO bound sind.
Wenn der Compiler nen besseren Job machen würde, dann bräuchte auch nicht die Hälfte der System.pas in Assembler geschrieben werden, damit sie schnell(er) ist.
Außerdem geht's mir hier primär um die antiquierte Ansicht und Propaganda, die von vielen verbreitet und geglaubt wird, dass nativ kompiliert automatisch schnell und...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
22. Nov 2019
Solang man eine singlethreaded Benchmark hat, reicht es in der Regel, sicher zu stellen, dass die Maschine auf der sie läuft nicht gerade viele Resourcen verbraucht und somit die Benchmark ohne Beeinträchtigung läuft.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
22. Nov 2019
Keineswegs merkwürdig - x86 hat im Vergleich zu x64 eine sehr limitierte Anzahl an verfügbaren Registern, daher kommt es da eher zu Register pressure.
Edit: Ich hab übrigens herausgefunden, was hier dafür sorgt, dass es in meinem Fall langsamer wurde. Ich habe timeges als long deklariert, da ich mir dachte, nuja Stopwatch.ElapsedMilliseconds ist ja auch long, also machts da keinen Sinn, das in...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
22. Nov 2019
Können wir das in einem neuen Thread diskutieren bitte?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
22. Nov 2019
Ach, noch was - solang du nichts daran geändert hast, wird dein .net Projekt mit Any CPU gebaut und läuft somit vermutlich als 64bit. Wenn ich das explizit auf x86 umstelle wirds auch langsam.
Hingegen wird es auf der Delphi Seite noch gruseliger, wenn ich auf Win64 umstelle. Da wird sogar ein explizites x:=x*3 direkt in der Schleife zu einem dämlichen
Project351.dpr.40: x := x*3;...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
22. Nov 2019
In meinem Test nicht. netcore 3.0 mit oder ohne Ausgabe von x war von Anfang an so schnell wie die Variante in Delphi, die in der Schleife das Register nutzt.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
22. Nov 2019
Dann schreib doch mal das Writeln(x) hinter das Writeln('Step: '+itotal.ToString()+' = '+tc.ElapsedMilliseconds.ToString()+ ' ms'); :roll:
Der Punkt bleibt: der Delphi Compiler optimiert relevante Stellen nicht, nur weil er später den Wert noch benötigt und ihn bis dahin nicht im Register halten kann.
Er könnte problemlos für die Schleife mit dem Register arbeiten und danach einmal das mov...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Stevie,
22. Nov 2019
Halt stop!
Wenn du Foo inline markierst, wird der Code schneller, weil er nix mehr ausführt (siehe H2077 in den Compilermeldungen) außer einer leeren Schleife. Es wird nix mit x gemacht also spart er sich auch die Multiplikation. Ein beherztes Writeln(x) nach der Schleife und der code ist wieder langsam. Das liegt einfach daran, dass der Delphi Compiler schrottigen Code erzeugt und Register...