AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Quicksort Algo für Strings optimieren

Ein Thema von kcx · begonnen am 13. Mär 2008 · letzter Beitrag vom 13. Mär 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Quicksort Algo für Strings optimieren

  Alt 13. Mär 2008, 22:59
Zitat von Hawkeye219:
Hallo,

Zitat von alzaimar:
Ich wäre jede Wette eingegangen, das der Compiler das 'DIV 2' selber in 'SHR 1' optimiert.
Dann hätte man das aber als Fehler melden müssen, denn SHR erwartet schließlich einen vorzeichenlosen Operanden.
Gruß Hawkeye
Das ist dem Shr vollkommen piepegal, der schiebt einfach. Und selbst wenn, bei einem statischen Array kann man ja theoretisch sowas machen:
TArrayFromHell = array[-666.. 666] of string; Hier gehts aber um ein dynamisches Array was zu sortieren ist, und die fangen doch in Delphi bei 0 an?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
kcx

Registriert seit: 19. Feb 2008
44 Beiträge
 
#12

Re: Quicksort Algo für Strings optimieren

  Alt 13. Mär 2008, 23:15
Danke an alle für die Hilfe!

Jetzt schafft es 1.000.000 Strings meist unter einer Sekunde.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Quicksort Algo für Strings optimieren

  Alt 13. Mär 2008, 23:20
Zitat von kcx:
Jetzt schafft es 1.000.000 Strings meist unter einer Sekunde.
D.h. fast doppelt so schnell, sauber. Ich habe zwar einen Funktionstest gemacht aber nicht geprüft ob der Code jetzt auch wirklich richtig sortiert...
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#14

Re: Quicksort Algo für Strings optimieren

  Alt 13. Mär 2008, 23:41
Hallo Union,

Zitat von Union:
Das ist dem Shr vollkommen piepegal, der schiebt einfach.
...und schiebt vorne immer ein 0-Bit nach. Der Compiler darf bei der Division einer vorzeichenbehafteten Zahl (Start und Stop haben im Beispiel den Typ "Integer") durch eine Zweierpotenz das DIV nicht durch SHR ersetzen, weil auch negative Werte vorkommen können. Diese Werte wären nach der Schiebeoperation aber plötzlich positiv, weil das Vorzeichenbit durch SHR nicht dupliziert wird, wie dies bei SAR der Fall ist. Ein Compiler kann nicht wissen, dass dieser Fall zur Laufzeit nicht eintreten wird. Der Programmierer könnte das abschätzen und den geeigneten Datentyp "Cardinal" wählen. In diesem Fall führt der Delphi-Compiler auch die Optimierung durch - jedenfalls dann, wenn links und rechts vom Zuweisungsoperator unterschiedliche Variablen stehen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Quicksort Algo für Strings optimieren

  Alt 13. Mär 2008, 23:49
Zitat:
Der Compiler darf bei der Division einer vorzeichenbehafteten Zahl (Start und Stop haben im Beispiel den Typ "Integer") durch eine Zweierpotenz das DIV nicht durch SHR ersetzen
Das ist ja auch klar, war ja nur eine Vermutung von alzaimar die eben so nicht zutraf. Und Du hast Recht, Cardinal wäre sowieso besser in dem Fall, falls man mal ein Array hat das mehr Elemente als $EFFF FFFF hat. Wer weiss was dann mit den Typecasts passiert und der Addressierung. Aber bei 4 Milliarden strings verwendet man auch keinen Quicksort mehr Da könnte man ja die Namen der halben Weltbevölkerung sortieren
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 10:31 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