int foo(int i) { apex_profiler_handle profiler = apex_start(APEX_FUNCTION_ADDRESS, &foo); int j = i * i; apex_stop(profiler); profiler = apex_resume(APEX_FUNCTION_ADDRESS, &foo); int k = j * j; apex_stop(profiler); return k; }
int foo (int i) { static __thread apex_profiler_handle my_profiler; if (i % 2 == 0) { my_profiler = apex_start(APEX_FUNCTION_ADDRESS, &foo); } else { my_profiler = apex_resume(APEX_FUNCTION_ADDRESS, &foo); } int result = i*i; if (i % 2 == 0) { apex_yield(my_profiler); } else { apex_stop(my_profiler); } return result; }