[MSVC 6] profiling probleempje

Pagina: 1
Acties:

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
ik besloot voor de grap eens mijn polygoon plotter te gaan profilen. Nadat ik profiling heb aangezet in de project settings en vervolgens Build -> Profile, runde ik mijn programma

echter toen het afsloot kreeg ik een error:
PREP : fatal error PRF1011: cannot open file d:\...\3dtest\release_profile\3dtest.pbo
nogal DUH, want die file bestaat ook helemaal niet :?
Maar goed, ik neem aan dat die file wordt geschreven tijdens de loop van je programma... maar bij mij komt er dus niets :?

Weet iemand waar het aan ligt? (Ik heb geprobeerd met de hand de betreffende .obj files toe te voegen aan de profiler, maar dat mocht niet baten)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
uit de msdn:
PROFILE profiles an application and creates a .PBO file of the results. Use PROFILE after creating a .PBI file with PREP
Misschien dat het iets helpt.... ben eigenlijk niet zo bekend met de profiler... :/

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
mja ik heb de hele msdn al uitgepluisd wat dat betreft... en het is voor mij ook de eerste keer :)

ik zal het eens proberen vanaf de commandline ipv vanuit de IDE

.edit: hmm als ik de profiler handmatig run met de door de compiler geproduceerde .exe file dan krijg ik nog steeds niets
als ik m echter run met een ._xe bestand dat ook in de dir staat krijg ik wel een pbo file, maar die is leeg :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Scoor anders bij intel Vtune, ze hebben 'n 30 dagen versie als ik me niet vergis.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
bedankt voor de tip, maar het moet natuurlijk gewoon werken in msvc :)

ik zal er wel naar kijken als ik het echt niet voor elkaar krijg... maar eerst even proberen de vc++ profiler goed aan de praat te krijgen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
hmm ik denk dat ik toch maar voor Vtune ga idd. Ik vond een interessant stukje op gamasutra (je hebt wel een login/pass combo nodig om te kunnen lezen):
Although we used Microsoft Visual C++, we did not use the bundled Microsoft Profiler. There were two reasons for this: we found it difficult to get the Microsoft product to work correctly (or at all) and the data format from their profiler was either inadequate or needed post-processing in a spreadsheet to be minimally useful. Using VTune, TrueTime, and the NT performance counters we were able to collect, analyze, and present data in a reasonable fashion.

VTune is a sampling profiler, which means it has a component that wakes up every few milliseconds (or whatever amount of time you specify) and looks at what processes are executing on the CPU(s). When you decide enough time has elapsed, you can stop VTune and look at the statistics it produces for each process executed during that time. If you've compiled your program with debug information, VTune can display which lines of code were called and what percentage of the elapsed time was consumed by the executing code.

VTune is great because you don't need to compile a special version of your program, it doesn't slow your program down while it runs, and it lets you see the amount of time the CPU spent executing processes besides your own. The only major drawback is that you can end up with spurious data due to this sampling. This can be caused by other processes that are running in the system, or by running VTune for too long a period. To improve VTune's accuracy on your own program, it comes with an API to turn VTune on and off programmatically. This is a very useful feature, especially when drilling down into the performance of specific subsystems and smaller sections of code.
.edit: hmm kan natuurlijk ook gewoon mijn eigen profiler maken... dan kan ik precies aangeven welke stukken code er geprofiled moeten worden en dan heb ik de data zoals ik m hebben wil

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ik heb hetzelfde probleem in Windows XP, maar onder Windows 98 werkt het goed.

Maar als VTune om de zoveel msecs sampled, dan heb je toch geen nauwkeurige stats for de diepste functies die misschien heel vaak maar wel heel kort worden aangeroepen?

Wat :r dat je dat artikel op GamaSutra niet eens kunt bekijken zonder een account aan te maken.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Op maandag 03 juni 2002 00:26 schreef Yarvieh het volgende:
Scoor anders bij intel Vtune, ze hebben 'n 30 dagen versie als ik me niet vergis.
Die app is ook 'maar' $699.00. Zijn er geen freeware/open-source profilers voor Windows?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
ah ok dan zal het daaraan liggen (dat het niet in winXP draait dus)

maar ik gebruik nu mijn eigen profiler... simple yet effective :)
werkt zo:
code:
1
2
3
4
5
6
7
8
void functie ()
{
    PROFILER_START ("functie ()");

    .. je code hier ..

    PROFILER_END ();
}

en genereert dit als output (even gekoppiepeest uit het projectje waar ik mee bezig was):
code:
1
2
3
4
5
6
7
8
9
Profile report: running for 17.378 seconds
---------------------------------------------------------------------------------------
blockname               calls |    total    |     avg     |    %    | max rec.

onPaint                 1 |    0.000016 |  0.00001564 |   0.00% |    1
Renderer::draw            1500 |    0.486134 |  0.00032409 |   2.80% |    1
Renderer::drawScan        510007 |    7.788687 |  0.00001527 |  44.82% |    1
Renderer::toBitmap          1500 |    4.777606 |  0.00318507 |  27.49% |    1
repaint                1500 |    0.047657 |  0.00003177 |   0.27% |    1

nadeel is wel dat je je code moet peperen met PROFILE_* macros... (en wel irri dat MSVC geen __func__ macro oid kent waardoor je handmatig de functie mee moet geven)
bijkomend voordeel hiervan is weer dat je precies kunt aangeven wat je wilt profilen en wat niet :)

moet m alleen nog aanpassen dat ie meerdere threads ondersteund enzo... en misschien dat ie z'n data doorstuurt naar een server app die er weer mooie tabelletjes en grafiekjes van kan maken tijdens de loop van het programma. Maar dat zijn allemaal slechts ideeen ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
Op zaterdag 08 juni 2002 01:07 schreef OlafvdSpek het volgende:
Wat :r dat je dat artikel op GamaSutra niet eens kunt bekijken zonder een account aan te maken.
mwa het artikel gaat verder niet over profilers ofzo... het was maar een klein stukje van het hele artikel waar ze iets zeiden over profiling (en dat stukje had ik dus gequote :))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1