na auch schon so weit
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Ausführungsplan
Ich hab mal wieder Lust ein unnützen Streben nach mehr loszutreten.
Ich brauch 4 LD, 1 S, 3 NJ, 2 P, 1 SD und ein X.
Eine Projektion könnt ich locker noch streichen.
Und am Ende hab ich 14 Tupel in der Ergebnismengen.
Zeitlich brauchts grad auf der faui05
real 1m51.856s
user 0m23.266s
sys 0m6.293s
Ok, es geht mit nur einem Project (was wir aber schon besprochen hatten g)
Die 14 Tupel, naja, ich hoffe mal, dass ist die Lösung, aber
real 0m1.153s
user 0m0.727s
sys 0m0.213s
schaut schon schon mal viel besser aus! (Das is ein krasser Unterschied, was hast du gemacht? Bin auch auf faui05 gewesen)
Keine Ahnung. Verwundert mich auch.
Aber jetzt war’s schon besser:
real 0m29.754s
user 0m21.490s
sys 0m6.044s
Im Vergleich zu meiner Zeit aber immer noch bedenklich!
Hm ja… Muss wohl am NestedLoopJoin liegen.
Hast du da groß was eingebaut? Ich mein um die n² Verlgeiche kommt man ja nicht rum, oder?
Ne, wohl net… Aber eigentlich hab ich auch nicht wirklich groß rumoptimiert (ich programmier halt schon optimiert :-P)
Was macht ihr denn?!
In Bezug darauf, wie wir uns anstellen, oder was die Aufgabe ist?
Wir sollen mit unseren implementierten relationalen Operatoren (Select := where, Project := select und NestedLoopJoin := join) eine Abfrage über 4 Relationen machen.
Na gut, dann lasst euch mal nicht aufhalten
Ich habs allerdings nicht kapiert, was das genau soll. Naja kann mir ja mal die Aufgabenstellung zu Gemüte ziehen.
real 0m1.032s
user 0m0.649s
sys 0m0.190s
Das war der schnellste Wert, den ich bei 10 Versuchen auf faui05 gemessen habe - im Mittel sind es ca. 1,1 Sekunden.
Ach ja, und ich verwende einmal [m]EXIT[/m], viermal [m]LOAD[/m], dreimal [m]NESTEDJOIN[/m], viermal [m]PROJECT[/m], einmal [m]SDISPLAY[/m] und einmal [m]SELECT[/m] plus sieben Leerzeilen und sieben Kommentarzeilen.
Und ich hab glücklicherweise meinen Fehler gefunden.
real 0m1.036s
user 0m0.655s
sys 0m0.190s
Hehe, das wär ja auch zu krass gewesen.
Darf ich fragen, woran es im Endeffekt lag?
Klar doch. Im CNestedLoopJoin hatte ich in getCardinality statt einem * ein +.
Noch zwei sinnlose Zeitmessungen auf [m]faui05[/m]:
Stresstest, Aufgabe b)
time ./rmtester < scripts/1.stress.tid.rm.tskr > /dev/null
real 0m12.872s
user 0m12.233s
sys 0m0.109s
Stresstest, Aufgabe c)
time ./rmtester < scripts/1.stress.ftid.rm.tskr > /dev/null
real 0m8.026s
user 0m6.316s
sys 0m0.171s
jetzt sind es schon 4
[code]time ./rmtester < scripts/1.stress.tid.rm.tskr > /dev/null
real 0m15.837s
user 0m13.413s
sys 0m0.207s
[/code]
[code]time ./rmtester < scripts/1.stress.ftid.rm.tskr > /dev/null
real 0m7.346s
user 0m5.705s
sys 0m0.191s
[/code]
Jetzt war der Rechner gerade unausgelastet, so dass die Ergebniss noch ein kleines bisschen schneller ausgefallen sind:
real 0m12.740s
user 0m12.019s
sys 0m0.126s
real 0m7.664s
user 0m5.909s
sys 0m0.160s
Am [m]FragmentTIDManager[/m] muss ich aber offensichtlich trotzdem noch ein bisschen schrauben.
schließ ich mich mal dem benchmarking an:
ohne efence:
Records: 8.898u 0.190s 0:11.98 75.7% 0+0k 0+0io 0pf+0w
FragRecords: 5.349u 0.138s 0:07.20 75.9% 0+0k 0+0io 0pf+0w
mit efence:
Records: 42.831u 8.147s 0:54.86 92.9% 0+0k 0+0io 5pf+0w
FragRecords: 24.303u 6.136s 0:33.73 90.2% 0+0k 0+0io 4pf+0w
Records: 8.898u 0.190s 0:11.98 75.7% 0+0k 0+0io 0pf+0w
FragRecords: 5.349u 0.138s 0:07.20 75.9% 0+0k 0+0io 0pf+0w
Oha, das sind ja mal sehr krasse Ergebnisse! War das auf [m]faui05[/m] mit den voreingestellten Compiler-Optionen, oder hast du [m]-O3[/m] und ähnliche Sachen angeschaltet? Oder hast du deinen Code einfach hochgradig brutal optimiert?
ja, das war eben auf faui05
also an den flags hab ich nichts verändert, die sind CXXFLAGS=“-ansi -pedantic -Wall -Werror -g” (müssten eigentlich die standard flags sein) und speziell optimiert hab ich eigentlich auch nicht, ich war schon zufrieden, als es mit efence und valgrind ohne probleme durchlief
eben nochmal nachgeschaut, und das -g war in der ursprünglichen configure.ac anscheinend nich drin, ändert an den ergebnissen auch nicht viel…
Records: 8.908u 0.167s 0:11.85 76.4% 0+0k 0+0io 0pf+0w
FragRecords: 5.309u 0.120s 0:07.18 75.4% 0+0k 0+0io 0pf+0w