Forum: PC-Programmierung Performance Tools


von Lukas D. (lukas_d)


Lesenswert?

Guten Morgen,

ich suche Werkzeuge mit denen man die Performance einer Software 
überprüfen und verbessern kann. Im Genauen geht es um die Verbesserung 
von Startup's, Aufspürung von Pollings und Sleep's etc. Hat da jemand 
Erfahrungen?

Grüße

Lukas

von oszi40 (Gast)


Lesenswert?

Gut daß es NUR die eine Software gibt. :-) WENNNN es die eigene SW ist, 
kann man Prüfpunkte einbauen und Logs lesen.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Lukas D. schrieb:
> ich suche Werkzeuge mit denen man die Performance einer Software
> überprüfen und verbessern kann. Im Genauen geht es um die Verbesserung
> von Startup's, Aufspürung von Pollings und Sleep's etc. Hat da jemand
> Erfahrungen?

Kommt stark auf die Plattform an. Ich finde google perftools 
(gperftools) ganz prima für CPU profiling. Statistische Profiler 
brauchen natürlich eine gewisse Lauflänge um Daten zu sammeln. Probleme 
im Startup-Code findest Du wahrscheinlich am besten durch Code Reviews 
und messen mit 'nem Oszilloskop. Sleep mit 'ner Suche über den 
Quellcode.

von Lukas D. (lukas_d)


Lesenswert?

Hallo,

danke für eure schnelle Rückmeldung. Zur Ergänzung die Software ist 
mehrere Gigabyte groß daher ist es mir nur sehr schwer möglich Pins zu 
toggeln um mit Oszilloskope zu messen aber ein guter Ansatz. Das heißt 
es müssten Tools sein die schon beim Kompilieren oder beim Debuggen 
Anwendung finden können. Tools die ich bereits gefunden hatte wären:

- Windows Performance Analyser
- API Spy
- Performance Counter
- Intel Parallel Studio

Hat damit jemand schonmal was gemacht?

Grüße

Lukas

von Kaj (Gast)


Angehängte Dateien:

Lesenswert?

Das was du suchst nennt sich "profiling" und dazu brauchst du einen 
"Profiler".

Wenn's dein eigener Code ist:
Unter Windows hat Visual Studio (ich glaube ab der 2012er Version) einen 
ziemlich guten Profiler mit drin.
Schau mal hier: https://msdn.microsoft.com/en-us/library/z9z62c29.aspx

Unter Unix/Linux hilft dir Valgrind bei der Analyse.
Das funktioniert in der Verbindung mit dem QtCreator ziemilch gut.
http://www.mantidproject.org/Profiling_With_Valgrind


Ein Profiler sagt dir ganz genau welche Funktion wie oft aufgerufen wird 
und wo viel zeit verloren geht.
Siehe Bild:
Oben sieht man den Code, und dann unten alle Funktionen die aufgerufen 
werden, wo die Funktion herkommt, usw.
In der 3. Zeile von unten sieht man den Aufruf von main.

von Mark B. (markbrandis)


Lesenswert?

Lukas D. schrieb:
> danke für eure schnelle Rückmeldung. Zur Ergänzung die Software ist
> mehrere Gigabyte groß

Mehrere Gigabyte an Sourcecode? Eher unwahrscheinlich.

: Bearbeitet durch User
von Rene H. (Gast)


Lesenswert?

Mark B. schrieb:
> Mehrere Gigabyte an Sourcecode? Eher unwahrscheinlich.

Weshalb? Ich habe gerade mal geguckt wie gross mein aktuell betreutes 
Projekt ist: 3,386196 GB.

Sowas ist sicher nicht häufig, kommt aber vor ;-)

Grüsse,
René

von Borislav B. (boris_b)


Lesenswert?

Visual Studio hat einen sehr nützlichen Profiler, den ich (seit dem ich 
ihn entdeckt habe) oft und gerne nutze.

von Lukas D. (lukas_d)


Lesenswert?

Hallo,

danke für die genannten Informationen und Werkzeuge. Werde mir die Tools 
mal genauer ansehen :)

Grüße

Lukas

von Kaj (Gast)


Lesenswert?

Rene H. schrieb:
> Weshalb? Ich habe gerade mal geguckt wie gross mein aktuell betreutes
> Projekt ist: 3,386196 GB.
Reden wir dabei wirklich nur über reinen Code oder sind da auch 
binaries, libs, bilder/icons, etc. dabei?
Bei reinem Code fällt es mir schwer zu glauben, das es wirklich 3,3 GB 
sein sollen.

Warum wir das hier nicht so ganz glauben?
Naja, Ich schau mir mal kurz den Linux-Kernel 4.7 als vergleich an...
Ausgepackt sind das 605 MB, 54394 Dateien in 3662 Ordnern inkl. 
Dokumentation etc. Das sind mittlerweile (ich glaube) über 20 Millionen 
Zeilen an Code.

Möchtest du uns jetzt erzählen, dass dein Projekt fast 6x so groß wie 
der Linux-Kernel sein soll? Halte ich, ehrlich gesagt, für 
unwahrscheinlich, wenn auch nicht unmöglich.

von Dennis S. (eltio)


Lesenswert?

gprof wäre auch noch ein Klassiker:
https://sourceware.org/binutils/docs/gprof/

Gruß
Dennis

von Draco (Gast)


Lesenswert?

Rene H. schrieb:
> Weshalb? Ich habe gerade mal geguckt wie gross mein aktuell betreutes
> Projekt ist: 3,386196 GB.
>
> Sowas ist sicher nicht häufig, kommt aber vor ;-)
>
> Grüsse,
> René

Wie heißt denn eure Firma?!

Also Chrome ist aktuell das größte was ich als Source gesehen habe, das 
liegt aber auch daran das in jeder Header 2kb Copyrights liegen, bei 
75.000 Dateien kommt da schon was zusammen und die  License File alleine 
schon 133 Mbyte. Und das sind ca. 1,5 Gbyte ingesamt als Projekt - wobei 
ca. 15% davon reiner Source sind.

Also Butter bei de Fische...: Wird das nen neues Windows?! :-D

von Mark B. (markbrandis)


Lesenswert?

Rene H. schrieb:
> Mark B. schrieb:
>> Mehrere Gigabyte an Sourcecode? Eher unwahrscheinlich.
>
> Weshalb? Ich habe gerade mal geguckt wie gross mein aktuell betreutes
> Projekt ist: 3,386196 GB.
>
> Sowas ist sicher nicht häufig, kommt aber vor ;-)

Aber wenn es vorkommt, dann ist es sicher nicht das Werk eines 
Einzelnen. Da müsste dann schon ein ziemlich großes Team 
dahinterstecken.

von Rene H. (Gast)


Lesenswert?

Kaj schrieb:
> Reden wir dabei wirklich nur über reinen Code oder sind da auch
> binaries, libs, bilder/icons, etc. dabei?
> Bei reinem Code fällt es mir schwer zu glauben, das es wirklich 3,3 GB
> sein sollen.

Code, ein paar Icons sind dabei, dass stimmt. Keine Bilder. Keine 
Binaries. Hmm.... Libaries hat es, die nehmen aber praktisch kein Platz 
sein.

Das Projekt ist 15 Jahre alt und entsprechend gewachsen. Ich wollte 
damit nur sagen, sowas kommt schon vor, ist aber sicher die Ausnahme. 
Ich kann ja mal schauen, wie lange das Compilieren auf einer 64 Core 
Maschine dauert. ;-)

Grüsse,
René

von Rene H. (Gast)


Lesenswert?

Draco schrieb:
> Wie heißt denn eure Firma?!

Kann ich Dir nicht sagen, sorry.

Draco schrieb:
> Also Butter bei de Fische...: Wird das nen neues Windows?! :-D

:-)

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Rene H. schrieb:
> Das Projekt ist 15 Jahre alt und entsprechend gewachsen. Ich wollte
> damit nur sagen, sowas kommt schon vor, ist aber sicher die Ausnahme.
> Ich kann ja mal schauen, wie lange das Compilieren auf einer 64 Core
> Maschine dauert. ;-)

lass doch einfach mal die "lines of code" zählen. Das ist meinst ne ganz 
gute Hausnummer für Projektgrößen.

von Rene H. (Gast)


Lesenswert?

Mark B. schrieb:
> Einzelnen. Da müsste dann schon ein ziemlich großes Team

Natürlich. Jetzt wird es nur noch betreut bis es "stirbt", 
dementsprechend klein ist das Team.

Grüsse,
René

von Draco (Gast)


Lesenswert?

Freitag... es ist Freitag! Sorry, aber ich glaube davon kein Wort. Wenn 
man nach 15 Jahren anfangen will, in einem Forum zu fragen, was es so 
für Perf Tools gibt. Sorry, für mich ist das eindeutig ein 
Freitags-Troll.

Und dann is die Firma auch noch so geheimnisvoll! Sorry, ich bin raus.

von Mark B. (markbrandis)


Lesenswert?

Da muss man schon richtig lesen: Die 15 Jahre hat nicht der 
Themenersteller genannt.

Aber ja, es ist komisch dass der Themenersteller angeblich an einem 
Riesenprojekt arbeitet, aber dann eher hier im Forum fragt als seine 
Kollegen, die es bei einem Projekt dieser Größe ja offensichtlich geben 
müsste.

von Rene H. (Gast)


Lesenswert?

Draco schrieb:
> Freitag... es ist Freitag! Sorry, aber ich glaube davon kein Wort.
> Wenn
> man nach 15 Jahren anfangen will, in einem Forum zu fragen, was es so
> für Perf Tools gibt. Sorry, für mich ist das eindeutig ein
> Freitags-Troll.
>
> Und dann is die Firma auch noch so geheimnisvoll! Sorry, ich bin raus.

Äh, ich habe nicht gefragt. :-)

Ich habe nur Mark darauf Aufmerksam gemacht, dass sowas vorkommen kann.
Deshalb tut meine Arbeitgeberin nichts zur Sache.

von Draco (Gast)


Lesenswert?

Rene H. schrieb:
> Äh, ich habe nicht gefragt. :-)

Aso ja - seh ich gerade :-D

von Pandur S. (jetztnicht)


Lesenswert?

3GB an Code. Interessant. Debugging muss natuerlich schon vor der ersten 
Zeile im Konzept gewesen sein. Profiling gehoert auch dazu.
Jede Unit, oder funktionale Einheit muss natuerlich mit einem eigenen 
Testprogramm getestet werden koennen...

Wenn nach 15 Jahren niemand mehr da ist der da den Ueberblick hat, 
gehoert das Teil langsam in die Mottenkiste.

Mach's neu...

von Pit (Gast)


Lesenswert?

oszi40 schrieb:
> Gut daß es NUR die eine Software gibt. :-) WENNNN es die eigene SW ist,
> kann man Prüfpunkte einbauen und Logs lesen.

Das ist eine tolle Idee.

Z.B. gibt es die Standard Library (usind namespace std;).

Da kann man mit <fstream> Dateien schreiben und mit <chrono> sogar 
Nanosekunden messen (obwohl ich glaube, dass die da auf Millisekunden 
aufrunden).

Wenn das jetzt keine Werkzeuge sind...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.