Ein paar Performance-Fragen



  • @MAXI:

    1. Wie schnell eine Anweisung ausgeführt wird, hängt von vielen Faktoren ab (und zum großen Teil, was zuvor gemacht wurde)
    2. Wenn du deinen Code schneller machen willst, solltest du nicht fragen: "Ist das schneller?", sondern "lohnt sich das?" Fast immer erkauft man sich schnelleren Code mit höherer Komplexität - und "rein nach Gefühl" irrt man sich ziemlich oft.

    Checkliste - von oben nach unten abarbeiten:

    1. Erst gucken (Profiler, Zeit stoppen, o.ä.)
    2. bestmöglicher Algorithmus
    3. Organisation der Datenstrukturen
    4. "low-Level"-Optimierungen wie die von dir angesprochenen

    Wenn du "nur aus Neugier" fragst, solltest du dich vielleicht mal eine Weile mit Assembler beschäftigen...



  • ChrisM schrieb:

    Klar sollte man normalerweise immer erst die übergebenen Werte des Benutzers validieren

    da mache ich recht oft ein assert()
    das ist so schön schnell 🙂



  • ChrisM schrieb:

    Hi,

    ja, die if()s sollte man natürlich auch weglassen.

    Klar sollte man normalerweise immer erst die übergebenen Werte des Benutzers validieren, aber in einer Funktion, die schnell sein muss, muss ich mich halt darauf verlassen, dass der Benutzer nicht so dumm ist und z.B. gerade 0 als Divisor wählt.

    ChrisM

    Sehe ich genauso. Mir ist allerdings nicht klar, warum Exceptions, die nicht geworfen werden, Overhead bringen. Die ifs bremsen natürlich. Bei zeitkritischen Funktionen, die Argumente übernehmen, verwende ich dann assert (fällt ja im Release weg), so dass ich mir nach ausreichender Testphase einigermaßen sicher sein kann, dass die Funktion richtig bedient wird.

    @peterchen: Man könnte vielleicht noch erwähnen, dass der vierte Punkt fast nie notwendig ist, amsonsten full ack. 😋

    @Maxi: Assembler ist vielleicht deshalb interressant, weil man dadurch einen guten Einblick bekommt, was der Prozessor eigentlich wirklich tut und was er bei "if (bla)" zu fressen kriegt. Aber besser als der Compiler optimieren kann von uns wahrscheinlich fast keiner.


Anmelden zum Antworten