Performance: Sortieren
Tom
- php
Hello,
angseichts der nach und nach entstehenden Flat-File-Funktionen kann ich hier ne Menge ausprobieren. Wen es interessiert:
Ein Array mit 990 Datensätzen mittels ksort() zu sortieren, dauert ca. 0,01sec.
Das Einlesen aus dem File, Deserialisieren und Filtern dauert ca. 0,10 Sec.
Der PC ist ein Athlon 700 mit 128MB Speicher und einer "normalen" 40GByte eIDE-Platte. Also nix besonderes.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi,
Ein Array mit 990 Datensätzen mittels ksort() zu sortieren, dauert ca. 0,01sec.
Das Einlesen aus dem File, Deserialisieren und Filtern dauert ca. 0,10 Sec.
Schöne Zahlen. Ohne jegliche Aussagekraft.
cu,
Andreas
Hello,
Ein Array mit 990 Datensätzen mittels ksort() zu sortieren, dauert ca. 0,01sec.
Das Einlesen aus dem File, Deserialisieren und Filtern dauert ca. 0,10 Sec.Schöne Zahlen. Ohne jegliche Aussagekraft.
Wie könnten wir die Aussagekraft denn steigern?
Insbesondere, wie könnte man einen ernstzunehmenden Performance-Check machen, um festzustellen, ob zb. Ein Forum mit ungefähr 1/10 des Besucheraufkommens vom SelfForum damit betrieben werden kann, ohne die Archivsuche, die braucht ja wirklich Power?
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi,
Schöne Zahlen. Ohne jegliche Aussagekraft.
Wie könnten wir die Aussagekraft denn steigern?
Werden bits sortiert? Oder Strings unterschiedlicher Länge? Oder Zahlen?
Einzelne Zahlen sind sowieso nicht sehr aussagekräftig.
Was passiert bei Verdoppelung der Anzahl? Bei Vervierfachung?
usw.
Du schreibst z.B. was von Filtern. Aber nicht, in welcher Form gefiltert wird. Wieviele Datensätze gibt es vor/nach dem Filtern (dann könnte man vielleicht was sehen, was das Verhältnis Sortieren/IO angeht?
Aber einfach 2 Zahlen in den Raum zu werfen? Was soll man mit den Zahlen anfangen?
cu,
Andreas
Hello,
Schöne Zahlen. Ohne jegliche Aussagekraft.
Wie könnten wir die Aussagekraft denn steigern?Werden bits sortiert? Oder Strings unterschiedlicher Länge? Oder Zahlen?
Einzelne Zahlen sind sowieso nicht sehr aussagekräftig.
Was passiert bei Verdoppelung der Anzahl? Bei Vervierfachung?
usw.
Du schreibst z.B. was von Filtern. Aber nicht, in welcher Form gefiltert wird. Wieviele Datensätze gibt es vor/nach dem Filtern (dann könnte man vielleicht was sehen, was das Verhältnis Sortieren/IO angeht?Aber einfach 2 Zahlen in den Raum zu werfen? Was soll man mit den Zahlen anfangen?
Gut, wenn man die Qualität dar Aussage auf den Punkt bringen will, dann stimme ich Euch beiden zu. Das ganze uss dann reproduzierbar beschreiben werden.
Allerdings freut es mich ganz generell und oberflächlich, dass die Aussagen zum "Speichern in Flatfiles mittels PHP" nicht wertlos sind und dieses Brutalverfahren überhaupt eine Chance hat, verwendet zu werden. Insofern haben die Zahlen schon einen Wert. Wenn nämlich bei 1000 Datensätzen und dem gewählten Verfahren bereits 1 Sekunde herauskommen würde, dann wäre das Verfahren von vorneherein zum Scheitern verurteilt, da man dann durch Optimierung vielleicht noch auf 0,7 bis 0,5 Sekunden kommen würde, aber eben nicht auf 0,1.
Wenn es von genügend "öffentlichen Interesse" ist, dann könntet Ihr euch doch an der nächsten Stufe der "Entwicklung" beteiligen und beim optimieren helfen.
Und was mich dann noch interessiern würde, wäre das Ganze auf PHP 5 OOP zu bringen. Da alle Schritte (hier) veröffentlicht werden und Dennis und ich das auch dokumentieren und erläutern wollen, was wir wann warum gemacht haben, haben auch die (zukünftigen) Forumsbeucher etwas davon.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
Ein Array mit 990 Datensätzen mittels ksort() zu sortieren,
dauert ca. 0,01sec. Das Einlesen aus dem File, Deserialisieren
und Filtern dauert ca. 0,10 Sec.Schöne Zahlen. Ohne jegliche Aussagekraft.
Wie könnten wir die Aussagekraft denn steigern?
Indem du von konkreten Zahlen weg gehst und eine Aufwandsanalyse
machst. Was fuer ein Aufwand ist es, einen Datensatz zu lesen? Was
fuer einer, einen zu schreiben? Was fuer einer, einen Datensatz zu
aendern?
Fuer eine Aufwands-Analyse wird geprueft, wieviele Schritte notwendig
sind, um eine Operation auszufuehren. So waere es z. B. interessant
zu wissen, was fuer einen Algorithmus ksort() zum sortieren nutzt.
Bei einem Quicksort-Algorithmus waere der Aufwand z. B. im
guenstigsten Fall O(N long N), im unguenstigsten Fall (im Fall einer
umgekehrten Sortierung der Daten) waere er allerdings O(N^2).
Der Vorteil dieser Form der Aufwands-Analyse ist, dass die
Einschaetzung der Komplexitaet des Algorithmus vollstaendig
unabhaengig von der Rechenkapazitaet ist. Mit Kenntnis der genauen
Implementation des Algorithmus und der verwendeten Hardware kann
dann notfalls genau die Laufzeit eines Algorithmus ausgerechnet
werden.
Insbesondere, wie könnte man einen ernstzunehmenden
Performance-Check machen, um festzustellen, ob zb. Ein Forum
mit ungefähr 1/10 des Besucheraufkommens vom SelfForum damit
betrieben werden kann, ohne die Archivsuche, die braucht ja
wirklich Power?
Da wuerde ich schlicht Benchmarks machen. ab ist z. B. ein nettes
Tool dafuer.
Grüße,
CK
Hello Christian,
Wie könnten wir die Aussagekraft denn steigern?
Indem du von konkreten Zahlen weg gehst und eine Aufwandsanalyse
machst.
Gibt es außer zwei Seiten Google zu diesem Thema im Netz irgendwo verständliche Quellen? Ich würde meine Unwissenheite gerne etwas verreingern und vielleicht so nach und nach auch die eine und andere mathematische Formel begreifen ;-)
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
Wie könnten wir die Aussagekraft denn steigern?
Indem du von konkreten Zahlen weg gehst und eine Aufwandsanalyse
machst.Gibt es außer zwei Seiten Google zu diesem Thema im Netz irgendwo
verständliche Quellen? Ich würde meine Unwissenheite gerne etwas
verreingern und vielleicht so nach und nach auch die eine und
andere mathematische Formel begreifen ;-)
Also, ich weiss ja nicht, wonach du suchst, aber der Suchbegriff
'Aufwandsanalyse' bringt mir mehr als genug Treffer. Unter anderem
einige Hochschul-Scripts, die ich uebrigens empfehlen wuerde.
Grüße,
CK