Freigeisterhaus Foren-Übersicht
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   NutzungsbedingungenNutzungsbedingungen   BenutzergruppenBenutzergruppen   LinksLinks   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Quersumme von 100!
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen   Drucker freundliche Ansicht    Freigeisterhaus Foren-Übersicht -> DAU's Paradise
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Critic
oberflächlich



Anmeldungsdatum: 22.07.2003
Beiträge: 16380
Wohnort: Arena of Air

Beitrag(#1647658) Verfasst am: 10.06.2011, 16:48    Titel: Antworten mit Zitat

Meine Quelle fuer die Performance-Geschichte geht buchstaeblich ganz an den Anfang zurueck: naemlich "Thinking in Java", 1st Edition. Dort wird im Prinzip zum ersten Mal erwaehnt, dass die Erzeugung von Objekten sehr viel teurer ist als eine solche mathematische Operation. Aber auch in spaeteren Werken wird die Erzeugung von Objekten immer wieder thematisiert, was Moeglichkeiten zur Laufzeitverringerung angeht. Bruce Eckel gibt fuer eine einfache Zuweisung einen Performance-Index von 1 an, eine Zuweisung eines Array-Elements dauere 2.7-mal solange, die Erzeugung eines Objektes 980-mal solange, eines Array schliesslich 3100-mal solange.

Natuerlich nur ganz quick-and-dirty implementiert, sind auf dem Uraltrechner, an dem ich jetzt gerade sitze, eine Million Multiplikationen von long-Werten im Mittel kaum messbar (maximal 60 Millisekunden, es gibt aber auch viele Iterationen, bei denen nicht einmal eine Millisekunde vergeht, so dass der Durchschnitt an Laufzeitbedarf sehr gering zu sein scheint), wenn ich das aber per Boxing und Unboxing realisiere, also immer schoen Objekte als Wrapper erzeuge, dauert es im Mittel 2000 Millisekunden.

Die Laufzeitordnung ist da ein anderer Aspekt: O(n log n) fuer Multiplikationsalgorithmen scheint eine ziemlich robuste untere Schranke zu sein. Der Begriff der "superschnellen DFT" fand sich in der Definition des Schoenhage-Strassen-Algorithmus, wo (ich habe _das_ noch nicht durchgearbeitet) mit einigen mathematischen Tricks gearbeitet wird, um vielleicht bei grossen Stellenzahlen einen kleinen Laufzeitgewinn zu erzielen.
_________________
"Die Pentagon-Gang wird in der Liste der Terrorgruppen geführt"

Dann bin ich halt bekloppt. Mit den Augen rollen

"Wahrheit läßt sich nicht zeigen, nur erfinden." (Max Frisch)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
brf
registrierter User



Anmeldungsdatum: 25.05.2010
Beiträge: 366

Beitrag(#1647706) Verfasst am: 10.06.2011, 20:47    Titel: Antworten mit Zitat

Ok. Jetzt ist es klar: Das Erzeugen von Objekten ist teurer als eine math Op wie +. Diese betrifft double-Zahlen.
Bei BigInteger ist das umgekehrt. Die kosten je nach Länge (aka Ziffernzahl).

Und O(n*logn) ist keine untere Schranke. Schönhage-Straßen ist schneller (trotz O(n*log(n)*log(log(n)))), weil die Konstante in praktischen Fällen kleiner ist.
siehe How fast can we multiply, Knuth, the art of computer programming.

Es gibt derzeit noch keine bewiesene untere Schranke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Critic
oberflächlich



Anmeldungsdatum: 22.07.2003
Beiträge: 16380
Wohnort: Arena of Air

Beitrag(#1647791) Verfasst am: 10.06.2011, 23:44    Titel: Antworten mit Zitat

brf hat folgendes geschrieben:
Ok. Jetzt ist es klar: Das Erzeugen von Objekten ist teurer als eine math Op wie +. Diese betrifft double-Zahlen.
Bei BigInteger ist das umgekehrt. Die kosten je nach Länge (aka Ziffernzahl).

Und O(n*logn) ist keine untere Schranke. Schönhage-Straßen ist schneller (trotz O(n*log(n)*log(log(n)))), weil die Konstante in praktischen Fällen kleiner ist.
siehe How fast can we multiply, Knuth, the art of computer programming.

Es gibt derzeit noch keine bewiesene untere Schranke.


(Nur noch zur Anmerkung, ehe ich mich blamiere wirr: Die Konstante hatte ich tatsächlich gar nicht betrachtet Mit den Augen rollen. Die Komplexitätsaussage ist natürlich (aus naheliegenden Gründen) auf ein bestimmtes Maschinenmodell bezogen, in dem nicht noch betrachtet wird, wieviele Operationen der Compiler oder die VM aus der Anweisung generiert und wie man den Algorithmus praktischerweise implementieren sollte, deswegen meine Argumentation.

Der Einwand ist auch richtig, daß OO, Rekursion etc. zwar einen gewissen Overhead mit sich bringen, aber eben auch viele Probleme damit effizienter (oder ggf. überhaupt erst) gelöst werden können. Nur zeigt das kleine Beispiel mit der Laufzeit eben auch, daß man, wenn man sich in einer bestimmten Sprache bewegt, auch da immer noch die Möglichkeit hat, den Algorithmus so zu implementieren, daß man Laufzeit einspart und so schneller und speichereffizienter zum Ergebnis kommt.

Die Komplexität der Algorithmen, die FFT verwenden, hängt indessen an der Komplexität der FFT. Zumindest wurde unter gewissen Bedingungen eine \Omega(n log n)-Schranke bewiesen, es ist allerdings nicht klar, ob die Bedingungen allgemeingültig sind. Der beste derzeit bekannte Algorithmus hat eine Laufzeit von 34/9 n log n Multiplikationen und Additionen für eine FFT auf einem Polynom der Stelligkeit n, aber es ist eben nicht bewiesen, daß dies der bestmögliche Algorithmus ist (Link).)
_________________
"Die Pentagon-Gang wird in der Liste der Terrorgruppen geführt"

Dann bin ich halt bekloppt. Mit den Augen rollen

"Wahrheit läßt sich nicht zeigen, nur erfinden." (Max Frisch)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen   Drucker freundliche Ansicht    Freigeisterhaus Foren-Übersicht -> DAU's Paradise Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Impressum & Datenschutz


Powered by phpBB © 2001, 2005 phpBB Group