das ist bestimmt eine Anfänger Frage und eventuell den meisten Leuten klar weshalb folgendes, das ich gleich beschreibe so ist wie es ist.
Ich habe gestern ein kleines Tutorial Video von DelphiLernen auf Youtube angeschaut. Und das kleine Programm nachgebaut.
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
sum: Int64;
StartTime, EndTime, ElapsedTime: Int64;
begin
StartTime := MilliSecondOfTheDay(Now);
sum := 0;
for i := 1 to 1000000000 do
sum := sum + 1;
EndTime := MilliSecondOfTheDay(Now);
ElapsedTime := EndTime - StartTime;
ShowMessage('Summe: ' + IntToStr(sum) + ' / Zeit: ' + IntToStr(ElapsedTime) + ' ms');
end;
Nichts großartiges.
Ich habe es für alle mir verfügbaren Plattformen kompiliert.
Win32 = 6063ms
Win64 = 390ms
macOS ARM 64 Bit = 1296 ms
macos 64 Bit ( mit rosetta) = 316 ms
in C für Arm mit gcc -O3
2 ms
Swift
41 ms Sekunden
C#
362 ms
Lazarus fpc für intel
421ms
fpc für arm
1624 ms
Was mich etwas wundert das dies in Windows bei 64 und 32 so ein großer unterschied ist, und das bei macOS die Rosetta Variante auch sehr viel schneller ist als die (Native Arm) Version. Selbe Bild beim FPC.
Gut C ist halt einfach schnell, dachte allerdings aus Erzählungen das Delphi nicht arg weit dahinter ist.
Was mir stark gewundert hat das Swift die Schleife so schnell durchläuft und auch das C# das Schneller durchläuft unter Macos als die Delphi variante.
Den Hacken Optimierungen habe ich angekreuzt in Delphi. Eventuell gibt es da noch etwas das man machen könnte.
Mich interessiert einfach woher diese unterschiede kommen. Vielleicht kann mich da jemand kurz aufklären.
Danke