AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Hilfe: Schnellste möglichkeit ein 4-Byte Array zu Sortieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe: Schnellste möglichkeit ein 4-Byte Array zu Sortieren

Ein Thema von Dano · begonnen am 4. Feb 2012 · letzter Beitrag vom 18. Feb 2012
Antwort Antwort
Furtbichler
(Gast)

n/a Beiträge
 
#1

AW: Hilfe: Schnellste möglichkeit ein 4-Byte Array zu Sortieren

  Alt 15. Feb 2012, 07:19
Wieso testet ihr eigentlich immer noch Birnen und Äpfel? Die Signaturen der Prozeduren sollten identisch sein, sind sie aber nicht.
Delphi-Quellcode:
function Selectionsort(Index: integer): TArrayOfByte;
// vs.
procedure Networksort2(var A: TArrayOfByte); register;
// vs.
procedure NetworksortASM(var A: TArrayOfByte); assembler;
Macht den Kohl nicht fett, ist aber unschön.
  Mit Zitat antworten Zitat
Horst_

Registriert seit: 22. Jul 2004
Ort: Münster Osnabrück
116 Beiträge
 
#2

AW: Hilfe: Schnellste möglichkeit ein 4-Byte Array zu Sortieren

  Alt 15. Feb 2012, 08:30
Hallo,

schlimm! Das habe ich doch kritiklos von Bjoerk's Vorgabe übernommen.
Natürlich macht es was aus, ob in dummy der Wert A vorher belegt ist oder erst innnerhalb der Funktion.( Zugriff auf Klasse-> Tlist ->dort das Element mit Zeiger auf den Wert ->und dann den Wert holen )

Code:
Erstellen der Werte: 1437 ms
...
2.ter Durchgang
DummySort: 187 ms
Selectionsort: 549 ms , zuvor Selectionsort: 609 ms,625 ms
Networksort: 516 ms, zuvor Networksort: 594 ms,578 ms
SelectionsortASM: 357 ms
NetworkSortASM2: 340 ms
NetworkSortASM2Horst: 328 ms
NetworkSortASM3Horst: 250 ms
Ntworksort2: 422 ms
Aber was soll es. Dank TList kann man es sowieso in die Tonne treten.Es geht hier um 10e7 Werte. Bei mir dauert also allein der Zugriff auf ein Tlist-Element innerhalb der Funktion etwa 70ms/1e7*3,2e9 ~ 22 Takte.
Die proceduren sind hier nicht schneller oder langsamer als bei TestVier.pas.

Gruß Horst
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Hilfe: Schnellste möglichkeit ein 4-Byte Array zu Sortieren

  Alt 15. Feb 2012, 09:26
Hallo,

schlimm! Das habe ich doch kritiklos von Bjoerk's Vorgabe übernommen.
Gruß Horst
Horst, das hast du mit Sicherheit nicht von mir übernommen.

BTW, wenn du etwas postest, dann nenn die Dateien bitte ncht Bjoerk*.zip. Danke.

Zusammenfassung: Von mir: #8 #51, Nicht von mir: Bjoerk*.zip

Geändert von Bjoerk (15. Feb 2012 um 10:00 Uhr) Grund: Zusammenfassung:
  Mit Zitat antworten Zitat
Horst_

Registriert seit: 22. Jul 2004
Ort: Münster Osnabrück
116 Beiträge
 
#4

AW: Hilfe: Schnellste möglichkeit ein 4-Byte Array zu Sortieren

  Alt 15. Feb 2012, 20:48
Hallo,

Die Variante mit Sprungtabelle ist fertig.
Die braucht bei mir 38 Takte, ein JMP bremst enorm.
Das wäre gegenüber ASM3, mit durchschnittlich 32 Takte, langsamer.
Vielleicht wäre es für INTEL Chips, da bei Dano Core2 die schnellste Version ASM3 45 Takte braucht.
Ich habe die Gesamtzeit angeben. Die Overhead braucht ja immer, ausser man schafft es inline, was bei meinem Test so nicht ging.

Gruß Horst
Code:
MaxRound 100004884 , F_CPU = 3.2 Ghz

Tests mit Dummy/ Overhead des Aufrufs
 Anzahl: 100004884 t  224,092 ms:   7,171 CPU-Takte
Tests mit Selectionsort3Down
 Anzahl: 100004884 t 3008,814 ms:  96,277 CPU-Takte
Tests mit NetworkSort2
 Anzahl: 100004884 t 2597,955 ms:  83,130 CPU-Takte
Tests mit NetworkSortAsmDown
 Anzahl: 100004884 t 1795,201 ms:  57,444 CPU-Takte
Tests mit NetworkSortAsmDown2
 Anzahl: 100004884 t 1841,396 ms:  58,922 CPU-Takte
Tests mit NetworkSortAsmDown2Horst
 Anzahl: 100004884 t 1548,641 ms:  49,554 CPU-Takte
Tests mit NetworkSortAsmDown3
 Anzahl: 100004884 t  989,808 ms:  31,672 CPU-Takte
Tests mit SORTSprungTabelle
 Anzahl: 100004884 t 1194,537 ms:  38,223 CPU-Takte
Angehängte Dateien
Dateityp: zip TestVier.zip (38,3 KB, 4x aufgerufen)

Geändert von Horst_ (16. Feb 2012 um 19:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:12 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