 Okay, dann fahre ich erst mal an. Ja, hallo, zu meinem Vortrag. Trau, kein Benchmark, den du nicht selbst gefälscht hast. Das ist ein Vortrag, in dem es im Wesigen um Benchmarks geht, da dumm, und um Fehler, die man beim Benchmarken machen kann, und um Bier. Im Wesigen, warum halte ich den Vortrag? Ich habe im letzten halben Jahr und meine Bachelorarbeit zum Thema besser Benchmarken gehalten, am KIT, beim Lehrstuhl, beim Herrn Snelting. Und die Idee dabei war einfach zu sagen, ja, okay, es werden besonders... Sorry. Und die Idee dabei ist einfach, es werden viele Fehler beim Benchmarken gemacht, in der Informatik und diese Fehler zu vermeiden, darum ging es halt in meiner Bachelorarbeit. Und das ist auch ein Guteil vom Vortrag. Jetzt. Und am Anfang, jetzt mal kurz eine Gliederung, was sage ich hier? Am Anfang die Einführung, um zu sagen, warum macht man sehr gern Fehler? Und auch meine Untersuchungen in dem Bereich, dann mathematischen Grundlagen. Ich habe ganze vier mathematischen Formeln drauf. Bitte nicht rausrennen, die sind wichtig und beißen nicht. Und dann noch häufig gemachte Fehler, für die kommt ihr wahrscheinlich her. Und im Rahmen meiner Bachelorarbeit habe ich dann auch einen Tool namens TEMCHI entwickelt. Das hatte ich dann auch noch kurz vorstellen, mit dem man so besser Benchmarken kann. Ich würde kurz sagen, worauf man beim Benchmarken achten sollte. Jetzt zum Anfang erstmal eine Motivation. Das Einführungsbeispiel, das man hier sieht, ist völlig sinthötisch, aber es wird später noch zeigen werden, ein typisches Beispiel. Die Idee ist hier, es wurden zwei Programme, Programm A und B jeweils 30-mal vermessen. Und der Mittelwert ist hier angegeben. Und man sieht, dass das Programm A anscheinend deutlich langsamer ist als das Programm B und in einem normalen Vortrag, zum Beispiel auf der GPN oder auch auf anderen Konferenzen, wo ich jetzt sagen würde, ja, warum Programm B so toll ist, warum Programm A so schlecht ist. Jetzt im Folgenden zeige ich aber die wahre Verteilung dieses Beispiels. Und man sieht hier relativ schön, dass die Situation nicht mehr ganz so eindeutig ist. Dass wir also nicht mehr eindeutig sagen können, dass Programm A schlechter ist oder Programm B besser ist. Und um so diese Ahnung, die man so ein bisschen hat, wenn man das Histogramm anschaut, so ein bisschen zu verdeutlichen, dann kann man sich da hergehen und sich statistische Kennwerte ansehen. Zum einen kann man sich das Minimum und das Maximum ansehen und sieht dann das, was man schon im Histogramm gesehen hat, die Messwert über einen relativ großen Bereich verteilt sind. Außerdem, wenn man sich den Mittelwert und den Medien betrachtet, sieht man, dass beim Mittelwert zwar das Programm B besser ist, beim Medien allerdings das Programm A besser ist. Das ist das, was man hier ansehen kann. Im Wesen der Mitlaste der Werte, wenn man die Laufzeitenwerte größer nachordnet, wir haben hier 30 Messungen, also das ist der Mittelwert, das 15. und 16. Wärts, weil der teilt die Messwerte in eine kleinere Hälfte und in eine größere Hälfte. Und man kann sich dann noch die Standardabweichung anschauen. Die ist im Folgenden erläutig, dann noch in den mathematischen Grundlagen. Und man sieht, dass dieses Maß viel Streu für die Streuen der Messwerte relativ hoch ist. Und man sieht, dass die Mittelwerte-Differenz im Vergleich zu der maximalen Standardabweichung sehr, sehr klein ist. Und wir sehen später eine Faustrede, die besagt, dass wenn die Standardabweichung kleiner als die zweifache, kleiner als die doppelte Mittelwerte-Differenz ist, das dann erst signifikant ist. Oder andersherum. Wir sehen später noch. Jetzt kann man dann noch später einen statistischen Test drauf werfen. Und da kann man dann sehen, dass die Wahrscheinlichkeit, dass es keine signifikante Differenz zwischen den beiden Laufzeitenverteilungen gibt, um die 32% ist. Und üblicherweise wird man das Ergebnis dann verwerfen. Aber die Sache ist, am Anfang haben wir die Grafen gesehen. Wenn wir uns die nochmal betrachten, dann ist die Situation für uns eigentlich eindeutig. Wir sagen, okay, wenn wir vortragen und uns sagen, Programm B ist total toll, dann glauben wir es ihm bald. Sieh doch jeder. Es ist leider nicht so, wie wir gerade eben gesehen haben. Und das ist einer der Fehler, der so häufig gemacht wird. Und jetzt kann man sich überlegen, Jaas ist ein synthetisches Beispiel. Wie oft passiert das in der Praxis wirklich? Und deswegen habe ich im Rahmen meiner Betschlaube auch eine Metaevolution von Publikationen durchgeführt. Dabei habe ich rund 150 Publikationen an vier hier, hier nicht namentlich genannten Lehrstöhlen am KIT an der Fakultät für Informatik betrachtet. Im Schnitt habe ich von jedem Lehrstuhl rund 30 Publikationen betrachtet. Eine Idee dabei war, dass sich bei jeder Publikation geschaut, ob okay, wenn Messwerte angegeben wurden, die hat so richtige Messungen, wo ich dann Mittelwerte und Minima hab, wurden da Streumasse angegeben. Streumasse ist zum Beispiel Stande der Weichung oder auch Fehler bei Alpen. Da einfach nur die Aussage, hey, die Streuung ist in den Messwerten gering, deswegen ignore ich sie einfach. Das habe ich schon gezählt. Und was man hier recht schön sieht, dass bei Großteil der Publikationen im Schnitt bei 90 Prozent der Publikationen keine Streuemassangaben dabei waren. Das ist einfach sehr, sehr irritieren, wenn man sich so denkt, die sind wichtig. Wir haben es im Motivationsbeispiel gesehen und trotzdem macht es einfach niemand. Und jetzt war halt die Frage, warum macht das niemand? Und jetzt habe ich einfach mal Doktoranden an allen vier Lehrsthöhlen gefragt. So, hey, ich habe da eure Ergebnisse gesehen. Sieht irgendwie total doof aus. Habt ihr da vielleicht einen Fehler gemacht? Und warum macht ihr das? Es mag ja auch gute Gründe geben. Und eine der Gründe ist Zeitdruck. Wenn ihr eine Publikation schreiben müsst, dann heißt es halt, okay, in einer Woche ist Paper Deadline und dann müsst ihr die Daten haben. Und so eine Standarderbeichung ist halt nun mal nicht wirklich was, was sie sagt. Ja, das ist unbedingt wichtig, weil es unterschreicht meinen Punkt. Nee, das ist was, was einfach nur aus der Methodik heraus resultieren sollte. Und natürlich auch die meisten Peer Reviewer ignorieren das auch. Es gibt wenige Peer Reviewer, die wirklich einen Zwingen, Streuemasse anzugeben. Deswegen macht es einfach niemand, weil wenn wir es nicht brauchen, dann lassen wir es halt, dann sparen wir uns die Arbeit. Und auch den Platz, das Problem ist, das in Publikationen der Platz sehr beschränkt ist. Und da ist natürlich jeder Satz oder jede weitere Spalte in der Tabelle, Platz, den man nicht für eigene Ergebnisse verwenden kann. Und am Ende ist es natürlich auch Unkenntnis. Also die meisten Informatiker haben nur eine Schmalspurstatistikvorlesung, wenn überhaupt. Und die ist dann im dritten Semester, wenn Informatiker in die Richtung kommen, dass sie Publikationen schreiben, in die Richtung Master oder Doktor arbeiten, dann ist die Statistikvorlesung schon diverse Jährchen her. Und das führt dazu, dass eine der meistgesagten Aussagen von wegen warum geben sie es nicht an, da ist es schlichtweg Unkenntnis. Und das ist eigentlich deprimierend für das Feld der Informatik, dass wir sagen, die Leute wissen einfach nicht die Bedeutung um der statistischen Grundlagen. Und das ist auch eine der Gründe, weswegen ich jetzt im Folgenden die Bedeutung und die Bedeutung gibt. Wichtig, ich habe zwar gezeigt, dass da methodisch Inkorrekt halten gibt, aber es heißt nicht, dass die ganzen Publikationen per se schlecht sind, sondern es gibt natürlich Publikationen, beweisen ihre Aussagen noch auf andere Wege und zeigen sie. Deswegen heißt es einfach nur, dass wir hier in der Informatik einen Fehlerbereich haben, den wir beackern sollten. Anscheinend gab es in den 90er-malen Versuch von Herrn Tichy auch in der Informatik-Fokultät kennen. Wir haben das Versuchs-Versionskontrollsystem ACS erfunden, den Versuch einfach, die Ergebnis-Erfassung in der Informatik zu verbessern. Da hat sich allerdings in die Richtung nicht so viel getan, wie wünschenswert wäre. Aber ja, in der Praxis ist es natürlich, wenn wir außerhalb des akademischen Bereichs gehen, ist es natürlich auch ein Problem. Jetzt im Folgenden, wie schon gesagt, die mathematischen Grundlagen. Am Anfang so ein paar Begriffe, die ich im späteren verwende. Zum einen sind das die Messwerte. Ich betrachte im Normalfall einfach die Messwerte x. Das ist einfach eine Menge von Messwerten x1, xn. Die Ordnung ist in dem Fall total unwichtig. Xi ist hierbei der i-te Messwert. Also irgendeinem verwende ich, um in eine Art Schleife drüberzuiterrieren über alle Messwerte. Dann x in klammern i ist der i kleinste Messwert. Das heißt, ich ordne die Messwerte der Größe nach und das ist dann der, der an der i-ten Stelle steht. Und n ist die Anzahl der Messwerte. Das heißt, wir betrachten n Messwerte xi. Jetzt am Anfang den Mittel. Das ist, ja, das aromatische Mittel kennen die meisten. Das ist im Wesigen die Summe über alle Werte und dann durch n. Das ist recht einfach. Deswegen wird es von den meisten auch einfach nur als Mittelwert bezeichnet. Zum einen gibt es verschiedene andere. Zum einen gibt es noch das geometrische Mittel. Das geometrische Mittel ist im Wesigen das gleiche, wie das aromatische Mittel, nur dass wir halt statt dem einst durchnenden Ente Wurzel nehmen und statt der Summe einen Produkt nehmen. Und jetzt ist die Frage ja, geometrische Mittel haben vielleicht manche gesehen. Ich habe gehört, in neuester Zeit wird es auch in der Rechnerstruktur und Vorlesungen im KIT zum Beispiel eingeführt. Warum ist es jetzt so wichtig? Wir haben hier ein sehr simples Beispiel. Wir sehen oben verschiedene Programme. Programme x, y und z. Und die wurden mit jeweils zwei Eingaben gebannt schmackt. Im Programm x hat die Laufzeit bei der ersten Eingabe 20 Sekunden, bei der zweiten Eingabe 40 und so weiter. Man sieht hier schön die Bärte. Und jetzt ist die Frage, was passiert, wenn wir in den Score berechnen wollen. Wir wollen für jedes Programm eine Kennzahl berechnen. Eine einfache Methode ist einfach, wir nehmen die Messwerte relativ zum ersten Programm. Das heißt, wir sagen das erste Programm bei der Eingabe 1 den normierten Wert 1, bei der Eingabe 2 den normierten Wert 40. Jetzt ist das Problem, wenn wir hier uns betrachten und sehen wir, dass wenn wir darüber uns arrhythmisch mittelbilden, sehen wir, dass das dann für x1 ist, für y1,25 und für z gleiche. Wenn wir jetzt allerdings hergehen und das Gleiche machen, wenn wir das ganze bezüglich y betrachten und wieder sagen, okay y hat hier für die Eingabe 1 die Laufzeit 1, für die Eingabe 2 auch die Laufzeit 1 und so weiter, sehen wir, dass das Ergebnis völlig anders ist. Das heißt, auch die Ordnung von wegen welches Programm es ist, das schnellste ist anders. Was einfach zeigt, dass da wo so eine Ecke ist, wo wir ganz gut tricksen können. Das heißt, je nachdem nach welchem Programm wir gewichten können, können wir sagen, okay Programm A ist besser als Programm B. Deswegen verwenden wir das geometrische Mittel. Wenn wir beim geometrischen Mittel das Gleiche machen, wir betrachten jetzt die Laufzeitenwerte relativ zu x, kommt bei 1 0 raus. Wenn wir das relativ zu Programm y machen, kommt es gleiche raus. Das ist ein gutes Zeichen. Das heißt, es hängt nicht mehr davon ab, welche Spalte wir betrachten. Und das ist ganz gut, weil es einfach einen Feld gibt, wo wir weniger darauf achten müssen. Deswegen im Allgemeinen, wenn ihr einfach relative Messweite mittelt, unbedingt geometrische Mittel verwenden, wenn ihr was anderes macht, dann lügt ihr also ein netter Benchmark, ein netter Titel des Papers, wo es irgendwie vorgestellt haben wollen, die Tabelle auch grob rausstammt, ist so von wegen, du lügst dann, wenn du so was machst, und die haben sich dann auch richtig aufgeregt in der Publikation. Aber was mache ich hier nicht, weil ich hoffe, ihr macht das alle schon. Wobei wahrscheinlich eher nicht, aber ja, ich bin realistisch nänger. Jetzt kommt die Standardabweichung. Wie gesagt, das ist eines der typischen Streumaße, die wir heutzutage verwenden. Es ist ein sehr simples, es ist im Wesentlichen die Summe der Abweichung zum Mittelwert durch En und davon die Wurzel. Das ist jetzt, glaube ich, die letzte Formel, die ich heute zeige. Ihr seid quasi mit den Formeln fast durch. Was das im Wesentlichen heißt angenommen, wir haben eine Normalverteugung, die Normalverteugung ist dieses orangene Ding, das ihr da seht, diese gausche Klockenkurve. Was die Standardabweichung wesentlich heißt, das im Bereich von, na, das im Bereich von dem Mittelwert, der ist hier, zu einer Standardabweichung rund 34% der Werte liegen. Hinten, wenn jemand schon mal gesehen hat, von wegen 95% Konfidenz in der Wald, dann heißt es einfach nur, das ist der Bereich, in dem 95% der Werte liegen. Wenn wir bei einer Normalverteugung haben, dann können wir sagen, das ist der Bereich plus minus 2 Standardabweichung, und jetzt kann man sich im Rahmen der Standardabweichung noch eine recht nette Faustregel überlegen. Die Faustregel stammt nicht von mir, die stammt von Gernot Heiser, aber er hat sich schön motiviert, weil das einfach eine Faustregel, da schauen wir uns an, ja, wir haben eine Standardabweichung, und was können wir damit grob aussagen über die Signifikanz von Differenzen 2 Mittelwerte machen. Und die Idee ist dahinter, wir haben hier zwei Verteilungen, die Mittelwerte blauen, die zweifach Standardabweichung kleiner ist als der Mittelwerte roten. Und jetzt ist die Frage, wie hoch ist die Wahrscheinlichkeit, dass wenn wir jetzt zufällige Messungen aus die zufällige Stichproben rausziehen, das heißt, wenn wir Messungen machen von dem Programm, dass die Laufzeitenvertragung der blauen und der roten Verteilung hat, dann sehen wir, dass die Wahrscheinlichkeit, dass bei einem Stichproben der Mittelwerte blauen Stichprobe größer ist, dass der Mittelwerte roten Stichprobe ist, bei rund 8% liegt. Das ist ganz okay unter den Annahmen, die wir gemacht haben. Es reicht zumindest für eine Faustregel aus. Und die Faustregel heißt dann im Wesentlichen, die Mittelwerte Differenz ist signifikant, weil sie größer gleich 2 Sigma ist. Und wenn man sich daran hält, vermeint man zumindest einige Fehler. Jetzt komme ich zu Bier, aber gleich. Jetzt ein Statistetest, das ist ein Statistetest grob. Dafür muss ich jetzt 2 Begriffe einführen, nämlich den Begriff der Hypothese. Die Hypothese, in dem Fall habe ich 2 Programme, die Einführungsprogramme, die Programme vom Einführungsbeispiel gehabt, nämlich das Programm A und Programm B. Die Hypothese ist in dem Fall, dass die Laufzeiten von A und B ungleich sind. Das wollen wir normal verzeigen. In einem Benchmark wollen wir zeigen, wie sie besser sind als die anderen. Also es gibt eine Differenz. Wir wollen in den meisten Fällen, wenn wir eigene Programme schreiben, nicht zeigen, dass wir genau gleich sind wie die anderen. Dann kann man aus der Hypothese die Nullhypothese bilden und die Nullhypothese ist quasi die Aussage, dass die Hypothese inkorrekt ist. Wichtig, wenn die Nullhypothese nicht gilt, heißt das nicht im Unkurschluss, dass die Laufzeiten A und B gleich sind. Das kann Statistische Tests einfach rein mathematisch nicht zeigen. Und der und so ein Statistische Test berechnet dann halt die Wahrscheinlichkeit, dass die Nullhypothese gilt. Und so ein Unterschied zwischen zum Beispiel in beiden Laufzeiten wird üblicherweise verworfen, wenn die Nullhypothese Wahrscheinlichkeit größer gleich 5 % ist. So ein Statistische Test ist so ein Standard-Tool, das man eigentlich verwenden sollte, ist auch recht einfach zu verwenden. Jetzt ist die Idee, was ist so ein typischer Statistische Test, den man häufig verwendet, da ganz viel mit Bier zu tun. Die Frage ist nämlich angenommen, ihr kennt vielleicht die Guinness Brauerei, die ist glaube ich ganz groß, gibt es ja auch in Karlsruhe Bier zumindest, die war auch schon um 1900, so 1906 richtig groß. Und die hatten das Problem, dass sie riesige Mengen produziert haben. Das heißt, dass sie fesserweise und das Bier musste immer vergleichbar schmecken. Und das Problem war dann, sie hatten riesige Mengen, zum Beispiel von Hopfen, dass sie einfach eingekauft haben und mussten ein relativ gut rausfinden, ob diese Hopfen hier in etwa der gleichen Qualität oder die gleichen Eigenschaften hat, wie diese Hopfen. Und was wir jetzt machen, wir ziehen aus beiden Hopfen quasi eine Stichprobe aus, weil die den ganzen Hopfen zu untersuchen irgendwie keine Ahnung, das ist der Vollhopfname und wir dann den ganz untersuchen, wenn es geht, wahrscheinlich ein bisschen schwierig. Das heißt, wir untersuchen jeweils kleine Stichproben und wollen dann schauen, gibt es dann eine signifikante Differenz. Das ist nichts anderes, was der T-Test macht, der wurde von Herrn Gossert erfunden, ich den Namen richtig ausspreche. Und der hat das, der war ein Statistiker, der war angestellt bei Guinness und hat es in seiner Zeit bei Guinness dann erfunden und was so ein T-Test im Wesen macht, der vergleicht und der gibt die Wahrscheinlichkeit an, dass es eine signifikante Differenz zwischen den beiden Mittelwerten der Verteilung gibt. Das ist nicht ganz gleich wie, hey, es gibt eine signifikante Differenz zwischen Verteilung, aber es reicht im Normalfall aus. Der wird halt häufig verwendet und auch in anderen Wissenschaften, zum Beispiel in der Biologie. Und der T-Test, wir betrachten im Normalfall, wenn wir Tests machen beim Benchmarken zwei Stichproben-Tester, damit vergleichen wir zwei Verteilungen. Was den T-Test ausmacht, dass er relativ robust gegenüber komischen Verteilungen ist. Es gibt natürlich noch andere Tests, aber die will ich hier nicht behandeln, weil damit kenne ich mich auch nicht total gut aus und euch langweils wahrscheinlich auch eher. Jetzt kommt der wichtige Teil, also quasi der Teil, für den ihr wahrscheinlich hier seid, wenn es ums Benchmarken geht, nämlich es geht darum, dass ich häufig gemachte Fehler, das kann man sich wohl denken, nachdem ich jetzt die Einführung gemacht habe und alles, ist, dass die Signifikanz der Daten nicht betrachtet wird. Das typische Beispiel ist, dass kein, dass ein Streumaß nicht angegeben wird und ein weiteres Beispiel ist, dass man einfach nicht solche, zum Beispiel Standabweichungsfausträge betrachtet oder auch, dass man kein T-Test darüber wirft, wenn man in Zweifel ist, ob die Daten wirklich signifikant sind. Und man soll zu guter Letzt, was man häufig vergisst, ist vergleichen, wie den Effekt, den ich gemessen habe, wie der zu anderen Effekten steht. Zu allem zeige ich jetzt noch ein kurzes, erläutere ich noch kurz näher. Also was ist so ein Fehlern, haben wir im Anfang gesagt, den machen Großteil der Publikationen, also wie gesagt 90% der akademischen Publikationen rund 4 Lehrstühlen am KIT. Die Stande der Weichungen vergleichbar Streumas wird üblicherweise halt nicht angegeben. Und ich habe da so eine Aussage von einem Dozenten, den ich nicht nennen will, weil ich vielleicht bei ihm noch Vorlesung habe. Er meinte so, ich habe ja diesen Grafen gemacht, wo ich vorhin gezeigt habe, wo ich gezeigt habe, dass irgendwie jemand die Streumasse angebt und habe dann halt bei jedem Dozent mal angefragt, hey, ja, das sieht mir ein bisschen doof aus und könnten Sie es mir mal begrüten wenn Sie es nicht. Die Argumentation war so ein bisschen überspitzt gesagt von ihm, ja, wir geben sie an, wenn es was ausmacht. Das ist halt eine prinzipiell, die Argumentation ist prinzipiell okay, nur andererseits sagt sie, wir geben sie quasi nie an, weil wenn es was ausmachen will, dann werden die Ergebnisse eher doof und dann lassen wir es eh. Es gibt natürlich noch andere Gründe, das nicht zu machen, aber es war halt schon ein bisschen deprimierend. Wenn ich die Arbeit dann vorgestellt habe, der konnte es auch erst mal nicht glauben, als ich eben gesagt habe in der Bachelor-Arbeitsprensation, ja, wir bringen sie, ich habe hier so Dozent meintet es war schon lustig, weil es ist eigentlich nur lustig, es ist irgendwie ein bisschen schade, weil man sieht dann einfach, dass das bewusst sein, dass wir einfach angehen, wie gut unsere Daten ist, nicht allgemein in der Informatik gegeben ist. Jetzt noch zum möglichen Streumasse wird zum Beispiel der Standardfehler. Das sind wir sehen die Standarderweichung durch die Wurzel von der Anzahl der Messungen. Das ist in manchen Teilen besser oder auch natürlich Konfidenzintervalle. Wenn wir Grafiken haben, was Informatiker öfters mal haben in Publikationen, dann kann man zum Beispiel Boxplots verwenden, das sind so, kennt man vielleicht diese eckigen Plots, wo ganz viele Punkte ausnommen sind. Wenn wir am Ende noch Zeit haben, kann ich den noch gerne noch zeigen. Die Standarderweichung soll ich zum Beispiel anzeigen, bei jedem Wert, wie ist die Standarderweichung jeweils. Das sollte man auch, eins von denen sollte man auch verwenden. Wobei wichtig, wenn ich dieses große Diagramm, weil ich am Anfang hatte, da habe ich auch schon gezählter Standarderweichung angegeben, wenn ich einfach nur, wenn mir einfach nur jemand hingeschrieben hat, ja von wegen Standarderweichung klein, deswegen Ignorese. Das solltet ihr, wenn ihr eine Publikation irgendwann schreibt oder wenn ihr irgendwo mal Benchmarks macht, unbedingt wenigstens angeben. Das hilft einfach. Ein weiteres Ding, es sind solche Effekte, die man im Normalfall nicht betrachtet. Diese Effekte haben einen schönen Englischen Begriff. Im Deutschen habe ich es mal in systemische Verzerrungen übersetzt. Es geht im Wesigen darum, dass wir ja eine Abbildung von Daten auf Kot haben. Das heißt, wir sehen hier, wir haben hier zwei Cash-Zahlen. Das hier ist die eine und das hier ist die andere. Wir sehen jetzt, dass die roten Daten einfach in eine Cash-Zahlen gut drin sind. Die grünen Daten auch und die blauen über zwei verteilt sind. Das heißt, potenziell, wenn wir auf die blauen Daten zugreifen, haben wir zwei Cash-Misses, wenn wir Pech haben. Das heißt einfach, wie die Daten im Cash liegen, hat doch schon eine Auswirkung darauf, wie die Performance von dem Ganzen ist. Das Problem ist jetzt, diese Lage auf die Cash-Zahlen durch vermeintlich vernachlässigbare Änderungen verändert werden kann. Zum Beispiel durch die größere Umgebungsvariablen. Die Umgebungsvariablen werden nämlich an den Anfang vom Stack gelegt und schieben dann ganz einfach das ganze Address-Layout runter. Und damit verschieben sie also überspitzt gesagt in der Publikation haben sie das mal so auf die Spitze gedreht und haben einfach geschaut. Okay, macht jetzt einfach nur verändernde Größe und die Umgebungsvariablen einen größeren Unterschied als die Änderung von O2 zu O3, also Compile-Affects beim GCC. Und sie haben in einem Fall so beim Teil vom Stackbenchmark rausgefunden, dass das das macht. Das sind halt einfach Effekte, die potenziell halt wirklich groß Effekt haben haben. Und besonders in der Welt, wo wir jetzt sagen, wir haben eine Verbesserung von 1-2 % da kann sowas wirklich reinspielen. Das ist der Fall gebracht. Von wegen der Ende sei jemand seinen Benutzernamen von Joe in Joe B oder Bla. Und das macht dann schon ein signifikante Performance-Unterschied. Und das ist halt irgendwie deprimierend. Das noch deprimierende ist, ratet mal, wie viele in viel vielen Publikationen das Ganze betrachtet wurde. Solche Verzerrungen. Eine? So viele? Ja, in gar keiner. Es ist sehr aus sich. Es ist sehr deprimierend, weil es gibt halt wirklich Effekte. Und es kommt so in letzter Zeit, dass es da Verbesserungen gibt in die Richtung. Aber ja, es dauert vielleicht noch 20 Jahre. Ich hoffe, dass ich es noch erleben darf, dass die Leute sowas noch betrachten in Publikationen. Ja, ein weiterer Grund ist einfach, dass die Funktionsreinfolge einen vergleichbaren Effekt haben kann. Einfach in Codecaches. Und das wird halt nie betrachtet. So schade, aber damit muss man sich abhinden in der Informatik, dass einfach Statistik so ein bisschen vernachlässigt wird. Und auch solche Effekte. Weil es geht halt doch am Ende um schnelle Ergebnisse. Ich kritisiere es die ganze Zeit, dass wir es euch Fehler machen. Aber ich kann es auch schon verstehen, weil jede Wissenschaft halt Dinge, die schief laufen. Das ist halt der Teil der Informatik. Jetzt noch ein wichtiges Fehler ist einfach, dass verwendete Setup nicht angegeben ist. So dass zum Beispiel, was häufig gemacht wird, ist die Hartford-Plattform angegeben. Nur so was wie welche genaue Programmesion habe ich verwendet. In der Zeit von öffentlichen Git-Repositories von Film Code kann man einfach sagen, hey, ich habe von meinem Programm den Git-Commit hab ich verwendet. Es ist nämlich schade, wenn man so irgendwie in den Benchmark revoluieren will und dann ist die Frage, wie kriege ich jetzt raus? Das war eine Publikation aus dem Jahr 2011. Wie kriege ich jetzt raus? Welche Programmesion die da verwendet haben? Steht nirgends wo? Natürlich in der Publikation ist nirgends wo wenn. Man kann dann so vergessen, ja, die Publikation war irgendwie Anfang 2011. Im Ergebnis war dann, dass ich rumgefragt habe bei einem der Autoren und der hat dann mit, keine Ahnung, mit LS und STAT und an Datei-Stempeln von den Ergebnisdateien rum und dann es war leicht obskur, macht's den Leuten einfach beim Revoluieren und sagt einfach, hey, ich hab die Version verwendet. Wenn ihr ganz nett sein wollt, packt einfach das Ganze, was ihr braucht zum Benchmark und zu einem Zip. Und dann ist es gut und besonders mit den Eingabendaten. Ich hab die Eingabendaten, die findest du in der Stelle unter der URL. Irgendwie doof, wenn ihr auf die Seite ist, ob du dir selber keine Kontrolle hast, weil dann nehmen sie es runter. Ja, und falls, und wirklich stellt ein Paket zusammen, Temchi bietet da auch eine Möglichkeit, wie es relativ einfach geht, also mit die duplicierten Paketen und allem. Aber da komme ich gleich noch zu sprechen. Jetzt hab ich ja auch die äußere Beeinflussungen von Benchmarks noch erwähnt, oder nicht erwähnt, zumindest jetzt erwähne ich so, wie sie beeinflusst werden können, zum Beispiel Benchmark und denkt, hey, ich hab nebenher noch mein Terminal oder meine IDE laufen, das wird schon nix machen. Es kann nur nur umständen was machen und besonders wenn das dann nicht beschreibt, wenn ihr so in eure, eigentlich kommt das in den vorherigen Punkt noch rein, wenn ihr hier einfach nicht reinschreibt, ja ich hab dieses Programm genau dann und dann verwendet, dann ist es halt schwierig. Die einfachste Methode ist einfach alle, einfach auf einem System zu Benchmarken auf den wenig Antroprogramme laufen. Außerdem muss man noch irgendwie die Temperatur von verschiedenen Geräten, zum Beispiel von der Prozesse-Temperatur betrachten, von Prozessor betrachten, weil wenn die Prozess-Temperatur zum Beispiel hoch ist, kann die Prozesse nicht übertanken. Oder schwieriger. Und natürlich auch festbarten Verhalten. Heutzutage haben wir irgendwie ein festbarten Caches und SSDs müssen irgendwie Trimbefehle und Blau ausführen und deswegen guckt das vor jedem Benchmark wirklich, vor jedem Lauf wirklich das System in einem Ruhezustand gekommen ist. Und wenn ihr anfängt mit Hard Drives zu Benchmarken, somit richtig diesen rostigen, drehenden Dingern, dann seid ihr fern von gut und böse und lasst es einfach. Die haben so lange Latenzen, da können die so doofe Effekte haben, ich würde davon einfach abraten. Und generell schaut, wenn ihr irgendwie Swap Space braucht, weil euer Ram nicht reicht, dann ist es auch ein schlechtes Zeichen, weil dann welche Daten liegen im Swap, das kann man halt vor nicht Deterministisch sagen und das ist auch doof. Jetzt komme ich noch so zu zwei interessanten Dingen, für die ich auch Beispiele habe. Einste Beispiele stammt von der letzten Hotter, erst glaube ich. Das stammt in den netten Paper, wie mir sieht, Scalability but at what cost. Und die Idee ist hier, wir haben irgendwie Big Data, kennt ja vielleicht jeder und da haben wir auch tolle Grafen. Einer der Fragen ist halt, ist so ein Graf zusammenhängt und die Publikation richtig gezeigt. Ey, der Algorithmus skaliert total toll. Zwei Algorithmen, Graf Lab und Graf X und die laufen dann auf 128 Kors und die brauchen dann für so einen Grafen, für einen 1, 42 Sekunden, für einen anderen irgendwie 700 Sekunden. Jetzt hat sich mal jemand überlegt, ja komm, uff, ich habe noch ein bisschen Freizeit, dann schreibe ich mal einfach schnell einen Code selber und guck dann, hat dann irgendwie rausgefunden, dass er sich ein bisschen anstrengend 150 Sekunden für die gleiche braucht und ein bisschen mehr anstrengend 50 Sekunden. Jetzt mal irgendwie, gibt es irgendwelche also wichtig, nicht relativ zu den, relativ zum CPU-Course, sondern einfach nur die Gesamtbezeit, die gebraucht wurde. Gibt es irgendwelche Vorschläge, wie viele, auf welchem System der das wohl gebenchmarkt hat, wie viel CPU-Course hat das System, wie immer die tollen Benchmarks bekommen hat, irgendwelche Vorschläge? So viele? Enige. Was? Ja. Ein Core. Und dieser eine Core, der war richtig geil, das ist also in einem, muss sicherlich in einem High-Performance-Computing- Glaster und alles, und total gekühlt und es ist einfach ein Laptop-Prozess also, der hat auch noch extra mit einer SSD gebenchmarkt, weil SSD ist mal neue Technik. Im Endeffekt, was mir hier sieht, das Problem ist, dass Algorithmen gut skalieren können nur. Niemand hat wirklich den wahren Grundfallbetrag. Der wahre Grundfall ist nicht ein anderes System mit 128 Cours das total skaliert, total, toll skaliert, sondern der wahre Grundfall ist ein anderes System, das das gleich macht. Der Grundhieber ist so ein bisschen, ja, es ist die Komplikation natürlich der wahre Grund, warum man hier deutlich schnell ist, einfach die algorithmische Komplexität von toll parallelisierbaren Algorithmen liegt halt irgendwie, glaube ich, in der Ecke von N Quadrat. Seine Algorithmen, die ihr geschrieben habt, sind eher N Log N und bei Datenmengen, die halt in die diversen Megabyte und sehr, sehr viele Moten gehen bei Grafen, macht das halt was aus. Okay, ein weiteres, was ich auch noch mehr betrachtet hab im Rahmen meiner Bachelorarbeit, war bis vor kurzem ein Claim in der GAC Dokumentation. Ein Claim hieß von wegen At The Moment minus O2 ist unlikely to produce Better Coat, denn auch amazing, das entspricht, also was das hier grob betrachtet, ist der Haskell Compiler, den kennt man vielleicht so, Haskell ist so eine Sprache, die Leute, die an der Uni waren, beim Hans-Nelting, gerne gelernt haben und danach wieder vergessen haben. Und GAC, so der Standard Compiler für, also Glasgow Haskell Compiler und so. Und jetzt haben die halt in ihrer Dokumentation, schreiben die halt so von wegen O2, ja, das macht keinen Unterschied, ob du O oder O2 verwendest. Die Compiler Flex, die Compiler Optimierungs Flex, entsprechen den etwa dem, was wir in GCC haben und den gleichen Namen. Jetzt hab ich mir halt einfach mal gedacht, wow, das ist doch ein schöner Claim, den kann ich doch mal schnell benchmarken. Hab dann das Lengward Shootout geben, so ein bisschen reimplementiert, kennen vielleicht Leute dieses Great Benchmarks Game, hab davon die Algorithmen genommen und hab halt alle einfach mal durchgejagt und mal gebenchmarkt für alle möglichen Compiler, also vom 7. bis zum 8.01. Wobei, das dementspricht da im Januar, gerade aktuell war. Und was man hier in der jeweiligen Spalte sieht, ist einfach, der Prozentsatz der Programme beilehnt eine signifikante Differenz zwischen den Programmlaufzeilen einmal ausgeführt, einmal mit O und einmal mit O2 der zweiten Spalte gibt. Und dabei hab ich halt ein Tätos verwendet, wie wir es machen sollen. Jetzt sieht man relativ schön, es gibt in rund 80% der Pfeile keine signifikante Differenz zwischen O und O2. Das ist ganz schön. Und wenn wir uns jetzt irgendwie an, und das gleiche ist auch mit O und O DPH, O DPH entspricht sowas wie O3 oder OFAS beim GCC und da gibt es halt auch eine signifikante Differenz und der Unterschied zwischen O2 und O DPH ist halt im Mittel vernachlässigbar. Und ja, das hab ich dann mal jemandem gezeigt, der sich so ein bisschen auskennt, Joachim Breitner, der macht hier auch glaub ich einen Vortrag zur Incredible Proof Machine oder kein Vortrag, aber oh, andere Veranstaltungen hier. Und der meinte dann, ja okay, klingt ganz cool und hat das irgendwie committed und das Ergebnis ist, der 8.01er Variante dieser Claim, nicht mehr in der Druckruf drin vorkommt. Ja. Was hat, hat wahrscheinlich niemand bemerkt, aber ich fand's total das war die einzige reale Auswirkung meiner Bachelorarbeit. Oh, was irgendwie ein bisschen deprimierend ist, aber ja, zumindest ist das schön, das heißt, wenn ihr demnächst mal irgendwie wieder Haskell kompilieren wollt, was ihr täglich machen wollt, dann denkt an mich. Am Ende sieht man einfach wichtig, wenn ihr irgendwie Claims habt, so von wegen meiner Performance ist total gut und klar, dann benchmarkt die auch wirklich, weil nichts ist schlimmer, wenn dann jemand später kommt und sagt, ich hab's mal nachgebensporten und hab rausgefunden, dass ihr einfach nur, oh, wahrscheinlich hat der Claim vor 10 Jahren gegolten, aber es hat sich ja niemand darum gekümmert, den wir haben, aber ja, weitere Fehler, die man noch machen kann, jetzt noch kurz in so einer Zusammenfassung sind, dass man natürlich zu wenige Läufe verwendet, wenn man 3 Läufe verwendet, dann ist man halt fern von gut und böse. Im Schnitt werden rund 10 Läufe bei Benchmarks verwendet. Ich würd vorschlagen, dass man so 15 bis 20 verwendet, hängt einfach auch davon ab, wie lange ein Benchmarklauf geht. Wenn ihr im Bereich Compiler- Bau seid, habt ihr Spec Benchmarks, da 100 Benchmarkläufe zu machen und besonders wenn ihr noch mehrere Dinge machen wollt, ist eher nicht so gut, aber begründet das dann wenigstens am Ende und verwendet so viele Läufe wie möglich. Dann verwendet natürlich das aerotmetrische Mittel statt dem geometrischen, andersherum verwendet das geometrische, oh, ja, da ist ein Teilbogen dran, gut, verwendet natürlich das geometrische Mittel, wenn ihr das aerotmetrische Mittel seid, dann macht ihr einen Fehler wie viele Informatiker, aber macht ihr nicht, wenn das geometrische Mittel für Zusammenfassung ist. Und noch ein Fehler, den ich jetzt noch gar nicht betrachtet habe, war, überprüft, dass viele Leute einfach bei Benchmarks nicht die Ausgabe der Programme überprüfen. Wenn das Programm halt irgendwie misst ausgibt, dann kann die Performance noch so gut sein, aber wenn euer Programm dass ihr gerade gebenchmarkt habt nicht funktioniert, dann ist der Benchmark ja, also kümmern euch drum, weil Benchmarking ist sehr, sehr schwierig auch ums korrekt zu machen, es ist eine Wissenschaft für sich, das war ich auch mit einem mathematischen Grundlagen gezeigt habe, ist nur ein kleiner Ausschnitt davon. Wenn ihr mit einem Statistiker redet, dann werdet ihr euch am Anfang erst mal sagen, wie ein Dozent, den ich nicht namentlich nennen will, an der Mathefokultät, der dann anscheinend den Vorlesungen über die ganzen Ingenieure und Naturwissenschaftler reint, die die Statistik total nicht rüchtet sich zumindest. Ihr könnt mit einem Statistiker eures Vertrauens und schaut da wirklich drüber, ob ihr da Fehler macht. Was ich euch gezeigt habe, ist nur eine Handreichung, die dazu führt, dass ihr bessere Benchmarks macht, als viele im akademischen Bereich. Aber ich habe dann am Ende auch noch Ressourcen, da stehen dann auch noch ein paar Links, da könnte ich weiter reinlesen. Jetzt komme ich zum Temchiteil, das ist jetzt quasi der letzte Teil. Temchiteil ist halt das Tool, das ich entwickelt habe im Rahmen meiner Bachelorarbeit. Falls es Leuten lesen können, das ist so eine alte Uhrenwerbung, die ich halt hergenommen habe und die so ein bisschen umgedichtet habe. Benchmarking, oh my dear friends, is pretty hard. Temchiteil for those who want to make better Benchmarks. Temchiteil ist ein in Python 3 geschriebenes Werkzeug, habe ich jetzt fünf Monate dran gearbeitet, irgendwie alles und kann sogar Cashes ausschalten, wenn es unbedingt wollte, hat dafür ein Betriebssystem und Modul, das ihr reinladen könnt und solche. Es unterstützt verschiedene Benchmarkenwerkzeuge wie zum Beispiel Spec or Perfstat, die wirklich Zeit messen mit Perfstat, habt ihr auch Zugriff auf solche nativen CPU Performance Counter, was häufig ganz interessant ist. Es unterstützt die Programmrandomisierung, das heißt, dass ihr solche systemischen Verzerrungen einfach mit voll Randomisierung oder auch die Randomisierung der größten Umgebungssache haben. Aus dem ermöglicht es die Separation von verschiedenen Prozessen, das heißt, dass ihr andere Prozesse zum Beispiel ausschalten könnt oder stoppen könnt während der Benchmark. Und auch die Paketierung, das heißt, ihr könnt so Temchipakete zusammenbasteln, die dann total toll sind, die könnt ihr dann verteilen und dann kann jemand das relativ einfach reproduzieren. Hier haben wir das Einfängensbeispiel vom Anfang und was der Graf stammt jetzt aus Temchi, das heißt Temchi hat den Graf selbst die Latichvariante definiert ausgegeben natürlich läuft seit einem Sekundenstand nicht dabei, weil Temchi keine Ahnung hat, ob das jetzt Sekunden, ob das Katzen oder Frösche sind, was ihr da gerade misst. Temchi würde einem da ganz viel rot angeben und einem dann sagen, pass auf es gibt viele Fehler, die du bei der Interpretation machen kannst. Einer der Fehler war zum Beispiel, dass Temchi ein Hinweis von wegen, ich habe ein T-Test drüber geworfen und die Ergebnisse sehen nicht wirklich signifikant aus. Wie Temchi jetzt noch grob aufgebaut ist es einfach, es gibt ein Bildtool, das kümmert sich so um das Bilden vom Programm, also so damit ihr so eine Programmronomisierung machen könnt. Daraus fliegt dann ein Schammel so was in die Richtung wie Chasen nur viel lesbarer und dann könnt ihr das zum Beispiel Temchi EXEG geben und Temchi EXEG ist nichts anderes, wie das macht die wirklichen Benchmarks, das wirft durch dann eine Datei raus, wo die Ergebnisse drin stehen und das wiederum in dem Schammel Datei und das könnt ihr dann Temchi Report füttern und das produziert euch dann zur Zeit schon HTML so richtig schön fancy HTML5 und CSV und so einen Console Output und alles und Temchi Report werde ich jetzt auch gleich noch in der Demo zeigen und wichtig diese ganzen Schammel Dateien kann man sehr gut auch von Hand editieren, also das war eigentlich das was ich auch als ich das Benchmark, als ich das Great Language Benchmarks Game reproduziert habe, habe ich im Wesen solche Schammel Dateien produziert. Ihr könnt alles selber schreiben und es ist sehr offen, das heißt ihr könnt auch die Ergebnisse dann einfach Temchi Report geben und das freut sich drüber und erzeugt euch so tolle Benchmarks. Temchi ist auch recht einfach zu benutzen das war eines der Ziele bei der Entwicklung das heißt ihr könnt es einfach verwenden, es hat eine Z-Share auch eine Bash-Tab-Completion, die automatisch generiert wird und es hat so Settings Dateien auf dem Fenster und im Wesen das zeige ich jetzt gleich noch in der Demo, aber kurz noch man kann so ein Paket für dieses Ls versus Ls. Beispiel kann man hier ein Paket recht einfach erzeugen, das wirft einem dann den Zipp raus und man ist fertig und das kann man dann ausführen auf einem anderen System und noch so ein toll tolles exotisches Feature weil ich einfach kann, Caches ausschalten, man sieht Caches sind wichtig, also mit Caches dauert es deutlich kürzer und das ist lustig, ja also Temchi kann das, ihr könnt einfach minus minus Disable Cache angeben beim Benchmark und Disable durch den Cache für die Zeit. Gerne. Ja, die Idee ist also die Idee ist bei Temchi, es lädt das Betriebssystemmodul, das macht nichts anderes als den Cache zu rückschreiben und dann den Cache quasi ausschalten und dann wenn Temchi fertig ist, dann arbeitet es wieder normal. Okay. Nee, das funktioniert noch nicht, ich wüsste auch nicht, wie man das konkret macht, das ist glaube ich ein bisschen schwieriger, damit habe ich mich nicht beschäftigt, dann fähre ich die Betriebssysteme, Leute mehr sagen. Zum Beispiel die Person, die neben dir sitzt. Aber ja, jetzt komme ich noch zur Demo, ich glaube ich habe noch um die 20 Minuten Zeit. Hoffe ich zumindest mal. Könnte ich das mit Go haben, das wäre sehr cool. Hallo Technik. Ach, kein Problem, dann tippe ich halt das Bit. Okay, Temchi ist so gut benutzbar, dass ich sogar einhändig das benutzen kann. Das lebe die Tab Completion also hier, hier seht ihr irgendwie, was ich kann. Kannst jeder lesen? Gut. Die Idee ist jetzt, dass ich so ein bisschen enger brauche, also ich tippe jetzt mal mit der rechten Hand, das geht besser. Also hier seht ihr Temchi und jetzt kann ich sagen was will ich denn gemacht, also so ein Beispiel, was ich jetzt mache, so Temchi Short verwenden. Sonst, das erleichtert es mir halt, ich muss keine Konfigurationen zuteilen schreiben. Ihr seht, ich habe auch für die Setsche also irgendwie Dokumentation noch dabei. Das erleichtert die Bedienung besonders, wenn man das Tool seit 2 Monaten eher weniger verwendet hat, weil die Bachelor bei das 2 Monaten, seit 2 Monaten rum, wie man kennt, die Motivation danach noch, das Tool den ganzen Tag zu wenden ist gering, also, aber zumindest was man dann machen kann, minus BD, einfach sagen, hey, Benchmark mir das Programm. Und ich habe gehört, dass nebenher der IMAX Vortrag ist und deswegen will ich jetzt natürlich IMAX oder Swim Benchmark machen. Because I can und ich bin übrigens ein Wim Bench, also ich verwende es natürlich häufiger, aber ich finde IMAX IMAX ist doch einfach nur, was was 8 megabytes, dann constantly Swapping. Okay, Wim Minus Minus halb, ich finde, das Halbkommando ist eines der wichtigsten Kommandos und jetzt könnt ihr, was ihr machen könnt, ihr könnt verschiedene Runders auswählen, die euch wirklich so die Messung erlauben, das heißt, ihr könnt hier zum Beispiel sagen, ich würde gerne so A-Usage, Password oder ein speckartiges oder einfach normaler Time-Util, die ich verwende, dann verwende ich mal ein Password, der gibt einfach deutlich mehr Informationen. Ich hoffe, ich habe keinen Fehler gemacht. Was hat mir jetzt, hey, ich hätte gar noch Routrechte, weil Prozess und Daten sehen jetzt irgendwie interessant aus, damit kann man noch nicht viel anfangen, deswegen finde ich Reportzoll, also grob, man kann damit was anfangen, man sieht, dass beim toll ist, zumindest schneller. Man kann jetzt einen Report erzeugen, da geht über das einfache Kommando Temp-G Report und standardmäßig werden die Ergebnisse und das higher-run-output produziert und dann dauert es ein bisschen. Wichtig, das erzeugt ganz fancy und ganz fancy, viele Grafiken, diverse Megabyte, das läuft gerade auf 4 Kern-Vollast, also auf mein ganzes System wird freutig, wenn ihr acht Dinger gegen einen Report mit acht Run-Blöcken erzeugen wollt, dann erzeugt das Ding euch ein 50 Megabyte, hat im Elder Time mit ganz viel JavaScript und Bildern. Es ist ein schöner Test für Browser, wenn ein Browser nicht abstürzt, dann ist er gut. Firefox stürzt glaube ich zumindest auch ein System mit acht Gigabyte RAM, weil er glaube ich mehr braucht. Jetzt kann ich mal Chromium verwenden und das liegt dann in dem Ordner Report. Ich habe halt so Standelfeld hier von häufig gemacht. Man sieht hier, ich habe 213 Note-Heim produziert. Ich habe auch so Latex, Export für Tabellen und für alle möglichen Grafiken gemacht. Ich hoffe, das funktioniert jetzt und wird auf dem richtigen Bildschirm angezeigt. Man sieht, dass die Bildschirmauflösung eher semi geeignet ist für das Ganze. Kann es noch jeder lesen? Gut. Hier sieht man so im Endeffekt, das sagt uns halt hier oben so ganz viele Errors, so worauf müssen wir achten. Und hier, das ist dieses Over All Summary. Und was es uns dann halt ansieht, ist, dass die Bildschirmauflösung eher semi geeignet ist für das Ganze. Was es uns dann halt anzeigt, ist genau dieses geometrische Mittel, was ich gemeint habe. Und was mir hier sieht, dass Wim das im Vergleich Imics vs Wim, das bezieht sich halt auf das geometrische Mittel der relativen Differenz. Was das ganz komisch zumindest zeigt, dass Wim besser ist als Imics. Und es zeigt einem, dass ganz viel Rot ist, weil wir messen hier ein Haufen Zeugs. Was auch noch vielleicht interessant ist, für Leute die sich mit Statistik nicht so auskennen wird hier nochmal kurz erklärt, was es macht. Das heißt, es gibt dir an, hey, es ist geometrisch Mittelbring, es ist da oben Wurz und da. Und es verweist auch noch auf so ein Paper, das sagt, warum du es verwenden solltest, weil sonst lügst. Das ist bei vielen Statistischen Kennwerten so. Ich hoffe, dass hier auch es bei Minus zum Beispiel gibt. Beim Standabeichen beim Mittelwerk, beim Standard Arrow, den ich nicht betracht habe, beim Min und Blau und das erläutert da noch. Jetzt kann ich mal hier unten, was vielleicht das Wichtige ist, hier. Wenn jemand Bock hat, das Ganze nochmal neu zu schreiben, mit ganz viel schönen Reakt und so was gerne. Ich habe es schön, einfach nicht, ich habe ein Statist seit dem Elb produziert. Es war deutlich einfacher. Aber wenn jemand mitarbeiten will, was man hier machen kann, man kann die ganze Tabelle als TSV oder als Lathe hier exportieren. Es funktioniert ganz gut. Und auch jegliche Diagramme als Bild oder als Lathe hier exportieren. Was halt sehr praktisch ist, wenn man eine Publikation macht, dann ist nämlich nicht mehr die Aussage, ich habe keine Zeit, sondern hey, das Tool erlaubt sich zu exportieren. Was man hier sieht, was uns wichtig ist, ist oft halt die Wallglock, einfach die Zeit, die es wirklich für den Benutzer braucht. Das ist relativ eindeutig. Wenn man das blaue E-Max ist das grüne. E-Max ist besser. Yay! Nehmen wir es Ihnen, es liegt wahrscheinlich daran, dass E-Max einfach mehr macht in der Hilfsanzeige, aber man sieht hier halt recht schön, dass es mir dann verschiedene Dinge angeht, wie es Konfidenzintervalle und T-Tests draufwirft und sagt ja, es gibt keine, die Wahrscheinlichkeit ist sehr groß, dass es eine signifikante ist. Das ist eigentlich ganz cool und man kann ja auch noch so keine Ahnung, wie man es halt will, man kann draufklicken und sich dann durchklicken und alles anzeigen lassen. Das ist fancy. Ich habe einen halben, ich habe einen Monat dran gearbeitet und mein Bachelor hat sich so ein bisschen gewundert, warum ich nicht einfach arbeiten mache, aber von schön sind irgendwie zwei, es sind irgendwie über eineinhalb Tausend Zeilen und das Ganze zu erzeugen und dann auch mal die Chorsupporter mit schneller geht und hier bei der Präsentation in zwei Minuten dauert. Aber ja, es macht ganz viel Spaß das Ding zu verwenden. Ja. Das hier kannst du einstellen. Ich kann ja mal also was es möglich ist, ich glaube ich unterstütze PNG und SVG standardmäßig. Was auch noch ganz cool ist, ich habe hier natürlich noch Tab Completion kann ich es auch zeigen, HTML2 heißt der Reporter, HTML1 war irgendwie komisch, deswegen habe ich in HTML2 geschrieben, was es hier an Optionen gibt, ich kann zum Beispiel auch PDFs generieren für jede Grafik, das mache ich standardmäßig schon. Was ich auch machen kann, ich kann für jede Tabelle XLS Format generieren. Warum? Weil ich es kann, ich habe eine Bibliothek gefunden, die ist mir macht sogar XLS X, wenn es jemand unbedingt machen will sogar mit verschiedenen Arbeitsbereichen ich habe es gelassen, aber ich finde es halt lustig, man kann Haufen generieren und es ist auch relativ einfach neue Dateilformate hinzuzufügen also denke ich zumindest und daran habe ich noch ein bisschen rumgearbeitet. Generell muss man sagen, dass TemChi relativ schön zu verwenden ist für Einführer Benchmarks es hat natürlich unruhende Ecken es hat natürlich Ecken, wo man sich denken könnte man das nicht besser machen es ist aber in der Hinsicht doch noch verwendbar weil es halt der Code ist vollständig dokumentiert und das ist ungewohnt für eine Bachelorarbeit, es besteht sogar der Anfang von der Dokumentation dabei von der User Documentation was sieht, ich habe ganz viel ich habe eine schöne Tab Completion gibt es auch nicht so oft, wenn ihr gestern bei diesem Audiotalk wart die Tab Completion da stammt von mir weil ich habe so viel Tab Completion gemacht und nur so wenn ihr jemals Tab Completion in Bash und Zetsche schreiben wollt es ist so creepy es ist halt Spaghetti Code und ah, lasst es aber es macht Spaß, ich keine Ahnung, ich habe wahrscheinlich drei, vier Wochen, bin Summe wahrscheinlich drei Wochen dran gearbeitet ich weiß nicht warum keine Ahnung, es macht Spaß mit Temchy kann man verwenden, es ist jetzt in der Version, glaube ich, irgendwie 7.5 Blar es liegt auf GitHub und man kann es recht einfach installieren einfach nur via PIP und es unterstützt gar viel und jetzt komme ich noch zurück zum Fahrtrag also ich bin später hier auch noch auf der GPN wahrscheinlich auch die nächsten Tage, man kann mich dann einfach fragen ich kenne mich in Benchmark, klingt so ein bisschen aus wie ich mich ein halbes Jahr mit beschäftigt hab ähm jetzt gehe ich wieder zurück an meinen Vortrag habe ich wohl die falsche Taste gedrückt sorry ähm so so nicht an der richtigen Folge ja, zumindest Temchy ist total toll es hat mir Spaß gemacht, nur Python 3 hat vorher Nachteil geschrieben, dass ich wenigstens ein Simter Validierung habe, weil ohne zu besittern ist es ein bisschen komisch ja, zumindest was jetzt noch kommt so zum Schluss das einfach was soll dir konkret betrachten also was sind die Dinge, die ihr wirklich mit heim nehmen solltet es sollte natürlich mit heim nehmen, dass Benchmark schwierig ist, um dass ihr euch mal mit beschäftigen solltet und nicht einfach mal hey, ich führ mal Time auf der Kommando-Zeil, treibe hintereinander aus und ich bin der King sondern betracht was? ja wie auch immer also betrachtet wirklich so, dass die Differenz demnächst signifikant ist verwendet ne Faustrehe verwendet ne Zweifel fragt bei wenn ihr irgendwie andere Probleme habt euren Statistiker oder Mathematiker in ihr so eine beste Tasche habt und wundert euch nicht, wenn ihr euch auslacht und sagt ha ha das war gefühlt die Reaktion die ich von Leuten bekommen habe von Mathematikern, als ich ihnen gesagt hab wie oft ne Standardabweichung angegeben wird in Publikation was da lustig war aber ja und dann solltet ihr auch noch schauen ist die Standardabweichung erwartbar groß wenn ne riesige Standardabweichung eine riesige Streuung eurer Messarbeit hat dann ist ihr irgendwas voll und habt ihr systemische Verzerrungen betrachtet ich würde mich freuen, wenn es noch ne Publikation irgendwie vom KIT gibt, dass es wirklich betrachtet systemische Verzerrungen jemanden kennt sagt ihm unbedingt mal dran schauen, wenigstens als Satz erwähnt ich würde mich tierisch darüber freuen auch an die anwesenden Doktoraten wenn ihr das Ergebnis so publiziert solltet ihr euch, wenn ihr es so fertig geschrieben habt mal überlegen, hab ich die Standardabweichung und vergleichbar Streuemass überall erwähnt wenn nicht schlecht, dann seid ihr wie, dann ist eure Publikation wie 90% der Publikation bei vier Lehrstühlen, dann könnt ihr also ihr seid in guter Gesellschaft und habt das Benchmarking Setup genau beschrieben und jetzt zum Ende, ich habe noch Ressourcen, wo ihr euch dann einfach nachschauen könnt zum einen meine Bachelorarbeit in Deutsch geschrieben 80 Seiten, wenn ihr Bock habt, euch da reinzulesen gerne dann gibt es SAMG das hat, ist auf GitHub, ihr könnt gerne issue schreiben und alles Gernot Halser hat ne das ist so ein Betriebssysteme-Mensch der hat so System-Benchmarking Benchmarking-Trims geschrieben, so ne lange Liste und auch ne freundlichsten zum Thema gehalten die könnt ihr euch auch anschauen, da ist noch mal ne breitere Liste, als ich hier gegeben hab und ich finde die die Publikationen haben so so genial tolle Titel in dem Bereich wenn dann halt so ne Publikation, er ist Producing wrong data without doing anything obviously wrong das ist halt toll, das ist dieses Paper mit den systemischen Verzerrungen an how to not live a statistic das könnte ich auch betrachten das war die skemetrische Mittelsache und das was ich auch noch verwendet hab war dieses Scalability at the costus, dass ihr wirklich den wahren Grundfall verwenden soll ansonsten gibt es noch Fragen, ich bin soweit fertig ja ach ja Temchy ist eigentlich ganz nett, der Name ist Problemis wenn ihr so ne Bachelorarbeitsprojekt schreibt also die Frage war ob der Programmname ne Bedeutung hat die Frage, das Problem ist angenommen, ihr habt ihr wollt irgendeinem Programm erfinden dann müsst ihr halt dem irgendein Namen geben dann könnt ihr den coolen Namen nehmen wie Walkback aber ihr könnt dann auch irgendwie sagen ich hab irgendwie keine Ahnung und coolen Namen, so fit und schwierig dann schaut ihr euch bei Benchmarking so Bench ist schon vergeben Benchli, schon vergeben die ganzen Namen überlegt ihr euch, ich hab vor jahren mal Loschbahn gehört, so ne logische Sprache die nehme ich dann einfach mal Temchy ist im Wesen das Board für ein Zeitabstand so ganz grob gesagt, in Loschbahn schön ist Temchy wird zumindest im Deutschen und im Englischen Sprachgebrauch sonst nie verwendet wenn ihr allerdings den Fehler macht irgendwie mal bei der Google Bildersuche Temchy einzugeben, lasst das bei der Arbeit da kommen sehr viele Bilder von jungen Frauen die Temchy anscheinend zum einen der Name von so einer Badmanufaktur in Südfrankreich ist und zum anderen häufiger Name im türkischen Bereich noch ne Frage ja es gibt viele Dinge, aber ich hab halt Temchy gewählt, weil es cool klang und am Anfang war es ein Brau Visorium und dann konnte ich jedem erzählen Loschbahn ist total toll und hab ich ihn gelassen ja also die Frage war, ob ich Temchy mal gebenchmarkt hab ihr habt ja diesen Report gesehen, natürlich ich hab den Report gebenchmarkt ich hab auch Temchy selber einen guten Teil gebenchmarkt, wenn die Report generieren dann macht es ja schon was aus, ob der Report 2, 3 Minuten dauert also ja, ich hab schon Meterbenchmark gemacht ich hatte auch schon die Themenrahmen meiner Bachelorarbeit im Benchmarking Benchmarktool zu schreiben für ein Benchmarking Tool kurzes Frage Temchy EXEG erzeugt die Laufzeitumgebung für den Benchmark und läuft dann auch lässt das Programm laufen hast du den Overhead von Temchy EXEG auch gebenchmarkt? natürlich, es gibt einen gewissen Overhead in die Richtung die Idee ist, dass die einzelnen Lauf, den ich wirklich messe von anderen Programmen gemacht wird zum Beispiel Perfstat natürlich hat es einen Overhead deswegen, Temchy kann man sollte man nicht für Programme verwenden, die im Millisegurtenbereich laufen es wurde schon dafür verwendet und es gibt anscheinend einigermaßen sinnvolle Ergebnisse, aber ich würde es nicht dafür verwenden es ist dafür da, ich habe länger laufende Programme Microbenchmarks und so was in eine ganz andere Geschichte, damit habe ich mich nicht beschäftigt sonst noch Fragen danke