automatische performance tests?



  • Hi,
    Ich bin auf der Suche nach einem Performance Testing Framework, welches ähnlich wie Unit Tests funktionieren sollte. Also Erstellung von Test Cases, nur eben mit Messung der Ausführungszeit und Vergleich unterschiedlicher Implementationen mit unterschiedlichen Eingaben. Sinnvoll wäre natürlich die Ausgabe in irgendein plotbares Format (CSV etc.). Das ganze muss auch compiler -u. plattformunabhängig sein, Valgrind etc. helfen mir also auch nicht weiter 😉
    Google hat leider nichts zutage gefördert, aber ich kann mir schwer vorstellen, dass es sowas noch nicht gibt 😕



  • Wie wär's mit Profiling? Automatisch in dem Sinne, wie du es beschreibst, ist das nicht, aber du kriegst mit Sicherheit ne Menge Infos über die Performance von was auch immer du laufen lässt... Zur Auswertung der Daten gibts auch einige Programme. Compilerunabhängig ist es auch nicht, weil jeder Compiler seine eigenen Ausgaben erzeugt. Aber es ist zumindest mit den verbreiteten Compilern machbar.



  • Als Profiler könnte man zum Beispiel AMD CodeAnalyst benutzen.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Nein, ein Profiler hilft mir natürlich nicht weiter, da er natürlich weder plattform -noch compilerunabhängig ist.

    Und, HumeSikkins, wenn ich schon so frage, ist natürlich klar, dass ich ein C++ Framework ähnlich wie Boost.Test für Unit Tests möchte und kein externes Programm 🙄



  • Performance messungen auf der größe von unittests bringen selten was. Performance messungen macht man normal am ganzen Programm und versucht so die teile zu finden die viel zeit brauchen. 80 20 regel.



  • was soll das bringen? schrieb:

    Performance messungen auf der größe von unittests bringen selten was. Performance messungen macht man normal am ganzen Programm und versucht so die teile zu finden die viel zeit brauchen. 80 20 regel.

    und die 20% kann man natuerlich unter gar keinen Umstaenden testen 🙄



  • es geht nicht um tests eines ganzen programmes, sondern einer bibliothek (die nicht nur von mir genutzt werden soll). und es geht auch explizit darum, die performance einzelner funktionen zu optimieren.

    aber ok, offensichtlich gibts da nichts. also wieder selber bauen...



  • Blue-Tiger schrieb:

    und die 20% kann man natuerlich unter gar keinen Umstaenden testen 🙄

    Du weißt einfach nicht, in welchen 20% Code die 80% Zeit verbracht wird, wenn Du es nicht misst.



  • nman schrieb:

    Blue-Tiger schrieb:

    und die 20% kann man natuerlich unter gar keinen Umstaenden testen 🙄

    Du weißt einfach nicht, in welchen 20% Code die 80% Zeit verbracht wird, wenn Du es nicht misst.

    Aber nachdem ich gemessen habe schon, und dann kann mich das Regressionframework aufmerksam machen, wenn ich Performance-Regressions in einer zeitkritischen Region verursache. Abgesehen davon dass es ja auch Programme gibt, die Echtzeitanforderungen haben, wo so ein Testframework immer Sinn macht. Eine andere Einsatzmoeglichkeit waer, dass ich einfach (& moeglichst automatisiert) testen will, wie eine Funktion sich mit verschiedenen Compilern & Compilereinstellungen verhaellt. Also Einsatzmoeglichkeiten fuer so ein Test-Tool seh ich durchaus 🙂



  • nman schrieb:

    Blue-Tiger schrieb:

    und die 20% kann man natuerlich unter gar keinen Umstaenden testen 🙄

    Du weißt einfach nicht, in welchen 20% Code die 80% Zeit verbracht wird, wenn Du es nicht misst.

    Naja, es ist doch meist ziemlich offensichtlich.



  • Blue-Tiger schrieb:

    Aber nachdem ich gemessen habe schon, und dann kann mich das Regressionframework aufmerksam machen, wenn ich Performance-Regressions in einer zeitkritischen Region verursache.

    Und was spricht dafür, dass Du es dafür verwendest?

    Walli: Nur wenn alles genau wie erwartet läuft und nichtmal dann immer. 🙂



  • nman schrieb:

    Blue-Tiger schrieb:

    Aber nachdem ich gemessen habe schon, und dann kann mich das Regressionframework aufmerksam machen, wenn ich Performance-Regressions in einer zeitkritischen Region verursache.

    Und was spricht dafür, dass Du es dafür verwendest?

    Ich versteh die Frage nicht ?-) Solche Informationen erhalte ich nur, wenn ich nachmesse. Und der Threadersteller will eben dieses Nachmessen automatisieren.



  • Blue-Tiger schrieb:

    Und der Threadersteller will eben dieses Nachmessen automatisieren.

    Was man ja mit einem guten Unit-Test-Framework ohne weiteres machen könnte, sollte sich recht einfach als simpler Test formulieren lassen.


Log in to reply