Sourcecode optimieren



  • Harstad schrieb:

    Hi,

    ich weiß, das der Compiler bereits Optimierungen am Code vornimmt und unnötige/umständliche Konstrukte verbessert. Ich suche jetzt aber ein Tool, welches mir bestehenden Sourcecode analysiert und ggf. optimiert bzw. klare Hinweise gibt, was ich optimieren kann.

    Das ganze dient Demonstrationszwecken, ich will die Compileroptimierung damit nicht ersetzen.

    Deswegen: kennt jemand Tools, die so etwas auf Sourcecodeebene zuverlässig leisten ohne den Code kaputt zu machen?

    Danke!

    Du kannst dir statische Codeanalyse Tools ansehen. Open Source ist da cppcheck zu nennen, kommerziell zum Beispiel Coverity. Wunder darf man sich davon nicht erwarten.

    Ansonsten schau dir z.B. http://www.agner.org/optimize/optimizing_cpp.pdf an.

    Ein Tipp aus meiner praktischen Erfahrung: am ehesten kann man Performance durch bessere Algorithmen bzw. Datenstrukturen rausholen. Z.B.: Langsame lineare Suche -> ersetzen durch binäre Suche.
    Oft aber helfen auch ganz banale Dinge. Eine Datei komplett in den Speicher zu laden statt Zeile für Zeile aus der Datei zu lesen.



  • muemmel schrieb:

    Harstad schrieb:

    muemmel schrieb:

    Die frage, ob ich was inline mache, oder ob ich ne for- oder ne while-Schleife nehme sind eigentlich unbedeutend. Die größte Bremse sitzt immer 30 cm vor dem Bildschirm.

    Aha. Was ist mit Systemen, die weder einen Bildschirm noch einen Bediener haben? Die Welt besteht aus mehr als nur aus Trivial-Applikationen auf einemn 08/15-PC.

    Die werden meisten von absoluten Profis programmiert, die selber wissen, worauf es ankommt.

    Und wo denkst du, kommen diese Profis her? Die fallen auch nicht vom Himmel...und für genau diesen Lernprozess hätte ich so ein Tool gesucht. Aber ist schon OK, in diesem Forum befasst man sich lieber mit Besserwisserei als mit der eigentlichen Fragestellung...


  • Mod

    Harstad schrieb:

    muemmel schrieb:

    Harstad schrieb:

    muemmel schrieb:

    Die frage, ob ich was inline mache, oder ob ich ne for- oder ne while-Schleife nehme sind eigentlich unbedeutend. Die größte Bremse sitzt immer 30 cm vor dem Bildschirm.

    Aha. Was ist mit Systemen, die weder einen Bildschirm noch einen Bediener haben? Die Welt besteht aus mehr als nur aus Trivial-Applikationen auf einemn 08/15-PC.

    Die werden meisten von absoluten Profis programmiert, die selber wissen, worauf es ankommt.

    Und wo denkst du, kommen diese Profis her? Die fallen auch nicht vom Himmel...und für genau diesen Lernprozess hätte ich so ein Tool gesucht. Aber ist schon OK, in diesem Forum befasst man sich lieber mit Besserwisserei als mit der eigentlichen Fragestellung...

    Die Fragestellung ist seit dem zweiten Beitrag im Thread beantwortet. Du ignorierst es bloß, weil dir nicht passt, dass die Antwort "Gibt es nicht" ist. Der Rest dreht sich natürlich um deine Reaktion, denn die ist äußerst unhöflich, weil du Erklärungen, warum es das nicht gibt, als persönlichen Angriff auf dich selber auffasst.

    Auch hier in diesem Beitrag: Warum musst du muemmel so doof angehen? Er hat dir erklärt, dass das keine Maschine machen kann und du fährst ihn an, dass du gerne eine Maschine hättest, die einen Menschen lehrt. Was soll das?



  • Ich finde, dass clang-tidy eben doch sowas kann.

    Gut, als Beispiel hatte ich jetzt eines gewählt, bei dem man einstellen kann, wie "sicher" die Konvertierung sein soll. Aber nehmen wir doch andere Beispiele, man kann die unsicheren Dinge ja ausschalten oder dann nur als sinnvolle Hinweise nehmen, die man manuell nachschauen kann.

    Wie wäre es mit

    http://clang.llvm.org/extra/clang-tidy/checks/misc-string-compare.html

    Das gibt doch deutlich genug einen Hinweis, was hier im Quellcode falsch ist und wie es besser geht.

    Oder wie wäre es mit http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-override.html, dem automatischen Hinzufügen von override? Das optimiert die Lesbarkeit des Quellcodes und ändert sicher nichts am Programm. Damit sind doch die Kriterien des OP erfüllt und dein "gibt es nicht" ist widerlegt.


Anmelden zum Antworten