Usage Example

/* Init */
sh_profiler_t prof;
sh_prof_init(&prof, PMCR_OPERAND_CACHE_READ_MISS_MODE);
int z_update = sh_prof_zone_register(&prof, "update");
int z_render = sh_prof_zone_register(&prof, "render");

/* Game loop */
while (running) {
    sh_prof_frame_begin(&prof);

    sh_prof_zone_begin(&prof, z_update);
    game_update();
    sh_prof_zone_end(&prof, z_update);

    sh_prof_zone_begin(&prof, z_render);
    game_render();
    sh_prof_zone_end(&prof, z_render);

    sh_scheduler_tick(&sched);

    sh_prof_frame_end(&prof);
}

/* Output */
sh_prof_print(&prof);           /* To dcload console */
sh_prof_dump(&prof, "/pc/profile.txt");  /* To host file */