Ausführungsplan

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.

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 :wink:

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. :wink:

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. :smiley:


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. :wink:
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]: :smiley:

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. :wink:


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


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 :wink:

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