Also noch tu ich mir schwer, meine ganzen Threads vernünftig arbeiten zu lassen, die Syncronisation macht mir zu schaffen.
Viel zu viele Threads bringen im Endeffekt auch nichts mehr, aber treiben die user time in die Höhe.
Bin jetzt momentan wieder mit der user time halbwegs an meiner Zeit der non-Multithreading Lösung dran. Der Overhead der erzeugten Threads lässt sich halt doch merken. Nur die real time ist deutlich besser:
faui05 [aufgabe2]> make time
time src/wsort </proj/i4sos/pub/aufgabe2/wlist4 >/dev/null
real 0m0.379s
user 0m0.539s
sys 0m0.029s
time src/wsort </proj/i4sos/pub/aufgabe2/wlist5 >/dev/null
real 0m0.743s
user 0m1.082s
sys 0m0.056s
Was schneller ist als fsort5
Allerdings sind bei fsort6 und 7 halt auch die user times extrem schnell. Verdammt
Ne extra Übung dazu wäre wirklich cool.
Nachtrag:
fsort7 hat ziehmlich langsame real times? ca. Faktor 3 gegenüber der user time. Wie geht denn sowas?
fsort6 ist allerdings sowohl real also auch user extrem schnell.
Hab jetzt an meiner non-Multithreading Lösung noch ein wenig rumgeschraubt und komm nun auf folgende Zeiten gegenüber fsort6:
faui05 [aufgabe2]> make time
time src/wsort </proj/i4sos/pub/aufgabe2/wlist4 >/dev/null
real 0m0.437s
user 0m0.402s
time /proj/i4sos/pub/aufgabe2/fsort6 </proj/i4sos/pub/aufgabe2/wlist4 >/dev/null
real 0m0.331s
user 0m0.255s
time src/wsort </proj/i4sos/pub/aufgabe2/wlist5 >/dev/null
real 0m0.872s
user 0m0.807s
time /proj/i4sos/pub/aufgabe2/fsort6 </proj/i4sos/pub/aufgabe2/wlist5 >/dev/null
real 0m0.578s
user 0m0.515s
Wie gesagt ohne Multithreading. Mal sehn wie weit man das noch treiben kann. Und dann mal sehn, ob das wieder Einbauen von Threads an bestimmten Stellen überhaupt noch was bringt, oder nicht…
Zumindest denk ich, dass die Geschwindigkeit von fsort6 nicht an Multithreading liegt? Arbeitet fsort6 überhaupt mit Threads? Ich hab da so ne Vermutung warum fsort6 so schnell ist…
Nachtrag 2:
Also jetzt denk ich ist für mich endgültig das Ende der Fahnenstange erreicht.
Das einzige, wo ich jetzt noch Zeit gut machen könnte ist wohl beim Einlesen, da hab ich nach wie vor keine Sonderbehandlung für Dateien, sondern les als Stream ein.
Hab jetzt nur noch zwei Threads, die so gut wie exakt die gleiche Laufzeit haben. Theoretisch kann ich das ohne Probleme auf 4, 8, 16 etc. Threads, die sich die Arbeit auch entsprechend linear aufteilen, ändern, bringt mir aber auf faui0X nichts. Wenn ich allerdings ein entsprechendes Cluster hätte…
fsort6(7) muss man sich wohl in der user time geschlagen geben, aber ich bin jetzt noch schön nah heran gekommen:
faui05 [aufgabe2]> make time
time src/wsort </proj/i4sos/pub/aufgabe2/wlist4 >/dev/null
real 0m0.272s
user 0m0.424s
time /proj/i4sos/pub/aufgabe2/fsort6 </proj/i4sos/pub/aufgabe2/wlist4 >/dev/null
real 0m0.310s
user 0m0.281s
time src/wsort </proj/i4sos/pub/aufgabe2/wlist5 >/dev/null
real 0m0.503s
user 0m0.805s
time /proj/i4sos/pub/aufgabe2/fsort6 </proj/i4sos/pub/aufgabe2/wlist5 >/dev/null
real 0m0.627s
user 0m0.578s
Aber da meine real time alle fsort’s schlägt, bin ich jetzt ja mal auf fsort8 gespannt