Dumping Profile Information

The _PGOPTI_Prof_Dump_All() function dumps the profile information collected by the instrumented application. The prototype of the function call is listed below.

Syntax

void _PGOPTI_Prof_Dump_All(void);

An older version of this function, _PGOPTI_Prof_Dump(), which will also dump profile information is still available; the older function operates much like _PGOPTI_Prof_Dump_All(), except on Linux when used in connection with shared libraries (.so) and _exit() to terminate a program. When _PGOPTI_Prof_Dump_All() is called before_exit() to terminate the program, the new function insures that a .dyn file is created for all shared libraries needing to create a .dyn file. Use  _PGOPTI_Prof_Dump_All() on Linux to insure portability and correct functionality.

The profile information is generated in a .dyn file (generated in phase 2 of PGO).

Recommended usage

Insert a single call to this function in the body of the function which terminates the user application. Normally, _PGOPTI_Prof_Dump_All() should be called just once. It is also possible to use this function in conjunction with _PGOPTI_Prof_Reset() function to generate multiple .dyn files (presumably from multiple sets of input data).

Example

#include <pgouser.h>

void process_data(int foo) {}

int  get_input_data() { return 1; }

int  main(void)

{

// Selectively collect profile information for the portion

// of the application involved in processing input data.

  int input_data = get_input_data();

  while (input_data) {

    _PGOPTI_Prof_Reset();

    process_data(input_data);

    _PGOPTI_Prof_Dump_All();

    input_data = get_input_data();

  }

  return 0;

}