AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64
Thema durchsuchen
Ansicht
Themen-Optionen

Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

Ein Thema von areyoudoneyet · begonnen am 18. Jun 2023 · letzter Beitrag vom 21. Jun 2023
Antwort Antwort
Seite 1 von 2  1 2      
areyoudoneyet

Registriert seit: 25. Apr 2023
18 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 18. Jun 2023, 13:55
Danke für die schöne Erklärung!
6 zu 1 mehr Arbeit in der 32 Bit Version, hätte ich nicht gedacht.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.933 Beiträge
 
Delphi 12 Athens
 
#2

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 18. Jun 2023, 14:45
Das hängt aber auch sehr vom konkreten System ab. Bei mir (i5-8600k) braucht Win32 ca. 1400 Millisekunden und Win64 ca. 1600 bzw. im Release 1300 vs. 400. Da ist der Unterschied geringer. Generell ist die Optimierung beim 64-Bit Compiler oft besser.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
areyoudoneyet

Registriert seit: 25. Apr 2023
18 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 18. Jun 2023, 15:41
Das hängt aber auch sehr vom konkreten System ab. Bei mir (i5-8600k) braucht Win32 ca. 1400 Millisekunden und Win64 ca. 1600 bzw. im Release 1300 vs. 400. Da ist der Unterschied geringer. Generell ist die Optimierung beim 64-Bit Compiler oft besser.
Verstehe

Code:
var
  counter: integer;
  startTime, endTime: TDateTime;
  timeTaken: Double;
begin
  counter := 1;
  startTime := Now; // Startzeit aufzeichnen

  asm
    mov ecx, counter
  @loop_start:
    inc ecx
    cmp ecx, 100000000
    jle @loop_start
    mov counter, ecx
  end;
  endTime := Now;
  timeTaken := MilliSecondSpan(startTime, endTime);
  ShowMessage(FloatToStr(timeTaken) + ' ms');
end;
jetzt nur noch ca. 50 ms für win32


Code:

procedure TForm1.Button1Click(Sender: TObject);
var
   counter:integer;
  startTime, endTime: TDateTime;
  timeTaken: Double;
begin
   counter := 0;
  startTime := Now; // Startzeit aufzeichnen
  while counter <= 100000000 do
    inc(counter);
  endTime := Now; // Endzeit aufzeichnen
  timeTaken := MilliSecondSpan(startTime, endTime); // Berechnung der benötigten Zeit in Millisekunden
  ShowMessage(FloatToStr(timeTaken) + ' ms'); // Zeigt die benötigte Zeit in Millisekunden an

end;
Ich habe jetzt mal den inc versucht. ist egal ob auf mac oder win immer bei ca. 30-60 ms.

d.h. für mich falls ich etwas Inkrementieren muss sollte ich "inc" verwenden anstelle "x := x+1;"

ich find das echt Interresant Dachte für mich immer... das ist doch das gleiche...

Geändert von areyoudoneyet (18. Jun 2023 um 15:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.933 Beiträge
 
Delphi 12 Athens
 
#4

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 18. Jun 2023, 18:31
Deine neuen Quelltexte machen aber auch etwas anderes. Anfangs hattest du eine Schleife mit der Änderung der Schleifenvariable und zusätzlich das Inkrementieren eines Wertes. Jetzt hast du nur noch die Schleife. Dass das schneller ist, ist klar.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
areyoudoneyet

Registriert seit: 25. Apr 2023
18 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 18. Jun 2023, 21:02
Deine neuen Quelltexte machen aber auch etwas anderes. Anfangs hattest du eine Schleife mit der Änderung der Schleifenvariable und zusätzlich das Inkrementieren eines Wertes. Jetzt hast du nur noch die Schleife. Dass das schneller ist, ist klar.
hm stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von MEissing
MEissing

Registriert seit: 19. Jan 2005
Ort: Egelsbach
1.384 Beiträge
 
Delphi 12 Athens
 
#6

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 19. Jun 2023, 10:27
int64 ist auf Win32 ist "teuer"

Das ursprüngliche
Code:
var
  i: int64;
auf
Code:
var
  i: integer;
bringt für Win32 schon etliches (6044 -> 736ms)
Matthias Eißing
cu://Matthias.Eißing.de [Embarcadero]
Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 20. Jun 2023, 10:34
Generell ist die Optimierung beim 64-Bit Compiler oft besser.
Dem muss ich widersprechen - eher im Gegenteil. Es ist in diesem konkreten Fall so, dass unter 64bit nativ gerechnet werden kann und unter 32bit ein Int64 auf 2 Register aufgeteilt ist.

Zur Eingangsfrage und den um mehr als Faktor 10 unterscheidenden Ergebnissen kann ich nur sagen: da ist ziemlich sicher irgendwo ein Messfehler oder eine nicht vergleichbare Compilerkonfiguration.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.933 Beiträge
 
Delphi 12 Athens
 
#8

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 20. Jun 2023, 10:57
Zur Eingangsfrage und den um mehr als Faktor 10 unterscheidenden Ergebnissen kann ich nur sagen: da ist ziemlich sicher irgendwo ein Messfehler oder eine nicht vergleichbare Compilerkonfiguration.
Das hat ja Matthias schon beantwortet.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 20. Jun 2023, 12:13
Zur Eingangsfrage und den um mehr als Faktor 10 unterscheidenden Ergebnissen kann ich nur sagen: da ist ziemlich sicher irgendwo ein Messfehler oder eine nicht vergleichbare Compilerkonfiguration.
Das hat ja Matthias schon beantwortet.
Hat er? Ich kann diese Messergebnisse mit Int64 unter Win32 nicht reproduzieren, daher liegt es entweder an den Compilersettings des TE oder seiner Hardware.
Der Overhead von Int64 unter 32bit ist messbar aber keineswegs auch nur annäherend in Bereich x10

Gut C ist halt einfach schnell, dachte allerdings aus Erzählungen das Delphi nicht arg weit dahinter ist.
Das hier hatte auch noch niemand kommentiert - gcc optimiert hier schon zur Compiletime und erkennt, dass es eine Schleife mit konstanter Anzahl an Durchläufen ist und generiert einfach schon den Wert für sum, so dass zur Laufzeit überhaupt keine Schleife passiert.
Der Messwert bei swift sieht auch aus, als ob da etwas ähnliches passiert.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (20. Jun 2023 um 12:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.933 Beiträge
 
Delphi 12 Athens
 
#10

AW: Geschwindigkeitsunterschiede Apple Sillicon / Intel Win32 / Win64

  Alt 20. Jun 2023, 14:41
Der Overhead von Int64 unter 32bit ist messbar aber keineswegs auch nur annäherend in Bereich x10
Bei mir liegt der Unterschied bei etwa Faktor 7. Int64 braucht wie geschrieben ca. 1400 Millisekunden, Integer ca. 200. Und dann ist die 64-Bit Variante bei mir auch langsamer.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 Uhr.
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