AW: Effizienz des Speichermanagers
Zitat:
Wenn Du weißt, das 1 Mio Einträge ungefähr 100ms brauchen, dann misst Du einfach 10 Mio / N mal, wobei N die Anzahl der Samples sind. Dann bist Du pro Test bei ca. 1 Sekunde und im sicheren Bereich (von wegen Messfehler etc.) |
AW: Effizienz des Speichermanagers
Zitat:
Zum Glück sind bei Pascal die Kompilierzeiten kurz, da kann man sich solche „Ungetüme“ wenigstens noch leisten... |
AW: Effizienz des Speichermanagers
Zitat:
Kleine Info noch nebenbei: in 2.7.1 gibt as auch noch -O4 und für -O3 könntest du noch -Oodeadvalues(damit fehlt nur noch das Field Reordering für -O4) und -Oodeadstore bzw. für -O4 nur -Oodeadstore noch einschalten (eine aktuelle 2.7.1 vorausgesetzt :mrgreen: ). Wenn du -Oodeadstore, -Oodeadvalues und -Ooconstprop unter -O- bis -O2 einsetzen willst, musst du auch noch -Oodfa aktivieren. Gruß, Sven |
AW: Effizienz des Speichermanagers
Zitat:
Was ich meinte war: Wenn eine Datenstruktur bei 10 Mio Einträgen wunderbar performant ist, aber mein Anwendungsfall nur 10 Elemente beinhaltet (das aber 1 Mio x pro Sekunde) muss man sich 2x überlegen, ob meine Datenstruktur die geeignete ist. Compilerzeiten und Dateigrößen sind da (für mich) zweitrangig. Boyer-Moore z.B. ist bekanntermaßen der schnellste Stringmatcher. Aber nur bei großen Alphabeten und langen zu suchenden Strings in noch längeren Zeichenketten. |
AW: Effizienz des Speichermanagers
[QUOTE=JamesTKirk;1255922]
Zitat:
Ich habe die Unit jetzt mal ins Projekt reingenommen: FPC 2.7.1 -O1 AVL Tree AL (1000000)I: 234 L: 141 R: 156 DL (1000000)I: 202 L: 156 R: 156 RD (1000000)I: 656 L: 530 RH: 374 RIH: 437 FPC 2.7.1 -O3 AVL Tree AL (1000000)I: 203 L: 94 R: 109 DL (1000000)I: 171 L: 94 R: 125 RD (1000000)I: 577 L: 436 RH: 328 RIH: 390 Das sollte jetzt passen. -O4 klingt interessant... mal schauen... |
AW: Effizienz des Speichermanagers
Zitat:
Lokalität und wenig Speicherverwaltung FTW :wink: |
AW: Effizienz des Speichermanagers
Eine Speicherseite (4096 Bytes) erscheint mir recht viel. Bei der Größe würde es mich doch wundern, wenn ein Baum nicht schneller wäre. Ich kann mir vorstellen, dass Arrays bis ~100 oder vielleicht 200 Elemente (sagen wir mal Ints) überlegen sind.
|
AW: Effizienz des Speichermanagers
Naja, wenn man etwas schielt, ist die binäre Suche in einem sortierten Vector/Array eine Suche in einem Binärbaum. Damit hat man maximal log_2(4096) = 12 Schritte, um einen Eintrag zu finden.
Den Vorteil hat man dann aber nur beim Suchen, beim Einfügen/Löschen können Kopieroperationen teuer werden. Dabei kommt es natürlich auch darauf an, wie die anderen Datenstrukturen verwaltet werden. Ein Baum, der durch seine Verteilung im Speicher auch nur einen Pagefault mehr auslöst, sollte dadurch für mostly-read-Fälle deutlich unattraktiver werden :mrgreen: |
AW: Effizienz des Speichermanagers
Das Suchen ist wohl auch eher nicht das Problem. Aber das Einfügen und Löschen eines Elements ist beim Array O(n), weil die Elemente im Speicher umkopiert werden müssen.
|
AW: Effizienz des Speichermanagers
Zitat:
"Big Oh ist nicht alles. Es gibt auch noch diese häßliche Konstante" |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz