Nanosekunden Profiler für MS VC++ 6.0



  • Hallo zusammen,

    kennt ihr einen Nanosekunden Profiler idealerweise MS VC++ 6.0 ?

    Hinweis:
    Es geht nicht darum das die Nanosekunde tatsächlich mit der Echtzeit übereinstimmt, sondern dass die Relationen der Aussagen stimmen.
    d.h. das können auch 'ticks' in beliebiger Einheit sein mit einer
    Auflösung deutlich genauer als µs.

    Falls ihr für andere MS VC++ Compiler solch einen Profiler gibt,
    bitte auch posten.

    Vielen Dank für eure Mühe,

    Gruß Frank



  • Meinst du vielleicht QueryPerformanceFrequency() bzw QueryPerformanceCounter() ? Die Auflösung ist Rechnerabhängig, aber bei mir hat der Timer zum Beispiel ne Auflösung von 1/2208066 s = 0,45 µs.



  • Hallo RedPuma,

    Danke für deine Antwort.

    Meinst du vielleicht QueryPerformanceFrequency()

    Nein, das meine ich nicht, ist aber dennoch ein guter Hinweis
    und das verwende ich auch um manuell bestimmte Bereiche zu 'profilen'.

    Ich meine Profiler, wie z.B. im VS 6.0 integriert.
    Der instrumentiert dann jede Funktion selbst, 'automagisch' und
    kann mir nach einem 'RUN' dann z.B. folgendes sagen:
    + welche Funktionen wurden aufgerufen
    + wie oft wurden die Funktionen aufgerufen
    + wieviel Zeit haben alle Aufrufe dieser Funktion benötigt
    + wieviel macht das an Zeit zum gesamten Programm aus ?
    ...

    Der integrierte Profiler vom VS 6.0 ist nicht schlecht,
    aber er kann 'nur' µs auflösen, damit kommt beim Aufsummieren von Zeiten
    für Funktionen die z.B. extrem häufig aufgerufen werden und weniger als 1 µs dauern nichts mehr raus und ich kann ihren Anteil an der Gesamtrechenzeit nicht
    mehr einschätzen ...

    Die Frage ist deshalb, ob es einen Profiler gibt, der noch feiner auflösen kann.
    Intel VTune wurde mir u.a genannt, kennt das jemand, hat jemand Erfahrungen damit ?

    Gruß Frank



  • Frank Erdorf schrieb:

    Intel VTune wurde mir u.a genannt, kennt das jemand, hat jemand Erfahrungen damit ?

    VTune kann extrem fein auflösen. Hatte noch nie einen Fall, wo ich draufgekommen wäre dass er eine Funktion die häufig aufgerufen wird "übersehen" oder total falsch "gemessen" hat.

    Kostet halt $$$, dafür funktioniert er supi.

    Achja: ich habe VTune bisher nur mit Intel CPUs verwendet. Keine Ahnung ob/wie VTune mit AMD CPUs tut.



  • Hallo hustbaer,

    Danke für die Antwort,

    Wie genau ist VTune denn, insbesondere bei Funktionen,
    mit weing Code (ca. 10 - 20 Zeilen pure c-code)
    die häufig aufgerufen werden, z.B. 2000000 mal.

    Was kann das Progamm in solchen Fällen noch anzeigen ?

    Laut Doku, soweit ich es verstanden habe geht es nicht für AMD Cpu's,
    wäre aber für mich erstmal nicht schlimm ...

    Danke Gruß Frank



  • Frank Erdorf schrieb:

    Wie genau ist VTune denn, insbesondere bei Funktionen,
    mit weing Code (ca. 10 - 20 Zeilen pure c-code)
    die häufig aufgerufen werden, z.B. 2000000 mal.

    Was kann das Progamm in solchen Fällen noch anzeigen ?

    Das kommt darauf an mit welchen Einstellungen du arbeitest.
    Es gibt einen Modus wo VTune das komplette Programm instrumentiert. Damit bekommst du 100% exakte Werte darüber wie oft eine Funktion aufgerufen wurde, wieviel Zeit in der Funktion selbst verbraucht wurde, wieviel Zeit gesamt verbraucht wurde (inklusive aufgerufene Unterfunktionen), welche Unterfunktionen wie oft aufgerufen wurden. Im Prinzip alles was sich so abgespielt hat.
    (OK, die Daten über die verbrauchte Zeit werden wohl nicht auf den Zyklus genau sein, aber sie waren für mich immer genau genug. Und mehr als im einstelligen Bereich wird wohl auch die gemessene Zyklenzahl pro Aufruf nicht daneben sein)

    Die Programme laufen in dem Modus *viel* langsamer, aber soweit ich es mitbekommen habe rechnet VTune die Zeit die für die Datenerfassung draufgegangen ist sehr verlässlich raus. D.h. das Programm läuft sagen wir mal eine Minute, die Zeit die VTune anzeigt ist aber nur 10 oder 20 Sekunden - da der Rest der Zeit eben für die Datenerfassung gebraucht wurde.

    Damit arbeite ich meistens, und damit hab' ich immer Ergebnisse bekommen die ich mir genauer nicht wünschen hätte können.

    Es gibt auch eine Demoversion, lade dir die mal runter, dann kannst du das Ding für 30 Tage testen. Ich denke so kannst du wohl am besten einschätzen ob es für deine Anforderungen ausreichend ist.


Anmelden zum Antworten