Skip to content

Commit 99bbad8

Browse files
authored
perf profiling: Adjust the calculation of execution time (#3089)
1 parent 9fb5fcc commit 99bbad8

File tree

4 files changed

+12
-17
lines changed

4 files changed

+12
-17
lines changed

core/iwasm/aot/aot_runtime.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2845,14 +2845,13 @@ aot_free_frame(WASMExecEnv *exec_env)
28452845
AOTFrame *prev_frame = cur_frame->prev_frame;
28462846

28472847
#if WASM_ENABLE_PERF_PROFILING != 0
2848-
cur_frame->func_perf_prof_info->total_exec_time +=
2849-
os_time_thread_cputime_us() - cur_frame->time_started;
2848+
uint64 elapsed = os_time_thread_cputime_us() - cur_frame->time_started;
2849+
cur_frame->func_perf_prof_info->total_exec_time += elapsed;
28502850
cur_frame->func_perf_prof_info->total_exec_cnt++;
28512851

28522852
/* parent function */
28532853
if (prev_frame)
2854-
prev_frame->func_perf_prof_info->children_exec_time =
2855-
cur_frame->func_perf_prof_info->total_exec_time;
2854+
prev_frame->func_perf_prof_info->children_exec_time += elapsed;
28562855
#endif
28572856

28582857
wasm_exec_env_free_wasm_frame(exec_env, cur_frame);

core/iwasm/interpreter/wasm_interp_classic.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -867,13 +867,12 @@ FREE_FRAME(WASMExecEnv *exec_env, WASMInterpFrame *frame)
867867
#if WASM_ENABLE_PERF_PROFILING != 0
868868
if (frame->function) {
869869
WASMInterpFrame *prev_frame = frame->prev_frame;
870-
frame->function->total_exec_time +=
871-
os_time_thread_cputime_us() - frame->time_started;
870+
uint64 elapsed = os_time_thread_cputime_us() - frame->time_started;
871+
frame->function->total_exec_time += elapsed;
872872
frame->function->total_exec_cnt++;
873873

874874
if (prev_frame && prev_frame->function)
875-
prev_frame->function->children_exec_time +=
876-
frame->function->total_exec_time;
875+
prev_frame->function->children_exec_time += elapsed;
877876
}
878877
#endif
879878
wasm_exec_env_free_wasm_frame(exec_env, frame);

core/iwasm/interpreter/wasm_interp_fast.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -901,14 +901,12 @@ FREE_FRAME(WASMExecEnv *exec_env, WASMInterpFrame *frame)
901901
#if WASM_ENABLE_PERF_PROFILING != 0
902902
if (frame->function) {
903903
WASMInterpFrame *prev_frame = frame->prev_frame;
904-
905-
frame->function->total_exec_time +=
906-
os_time_thread_cputime_us() - frame->time_started;
904+
uint64 elapsed = os_time_thread_cputime_us() - frame->time_started;
905+
frame->function->total_exec_time += elapsed;
907906
frame->function->total_exec_cnt++;
908907

909908
if (prev_frame && prev_frame->function)
910-
prev_frame->function->children_exec_time +=
911-
frame->function->total_exec_time;
909+
prev_frame->function->children_exec_time += elapsed;
912910
}
913911
#endif
914912
wasm_exec_env_free_wasm_frame(exec_env, frame);

core/iwasm/interpreter/wasm_runtime.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3455,14 +3455,13 @@ llvm_jit_free_frame(WASMExecEnv *exec_env)
34553455

34563456
#if WASM_ENABLE_PERF_PROFILING != 0
34573457
if (frame->function) {
3458-
frame->function->total_exec_time +=
3459-
os_time_thread_cputime_us() - frame->time_started;
3458+
uint64 elapsed = os_time_thread_cputime_us() - frame->time_started;
3459+
frame->function->total_exec_time += elapsed;
34603460
frame->function->total_exec_cnt++;
34613461

34623462
/* parent function */
34633463
if (prev_frame)
3464-
prev_frame->function->children_exec_time =
3465-
frame->function->total_exec_time;
3464+
prev_frame->function->children_exec_time += elapsed;
34663465
}
34673466
#endif
34683467
wasm_exec_env_free_wasm_frame(exec_env, frame);

0 commit comments

Comments
 (0)