Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions base/timing.jl
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ function cumulative_compile_time_ns()
return comp, recomp
end

# Time spent JIT-compiling Julia method instances, a subset of
# `cumulative_compile_time_ns`
fptr_compile_time_ns() = ccall(:jl_fptr_compile_time_ns, UInt64, ())

function cumulative_compile_timing(b::Bool)
if b
ccall(:jl_cumulative_compile_timing_enable, Cvoid, ())
Expand Down
1 change: 1 addition & 0 deletions src/jitlayers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,7 @@ jl_code_instance_t *jl_generate_fptr_impl(jl_method_instance_t *mi JL_PROPAGATES
jl_atomic_fetch_add_relaxed(&jl_cumulative_recompile_time, t_comp);
}
jl_atomic_fetch_add_relaxed(&jl_cumulative_compile_time, t_comp);
jl_atomic_fetch_add_relaxed(&jl_fptr_compile_time, t_comp);
}
ct->reentrant_timing &= ~1ull;
}
Expand Down
5 changes: 5 additions & 0 deletions src/jlapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,11 @@ JL_DLLEXPORT uint64_t jl_cumulative_recompile_time_ns(void)
return jl_atomic_load_relaxed(&jl_cumulative_recompile_time);
}

JL_DLLEXPORT uint64_t jl_fptr_compile_time_ns(void)
{
return jl_atomic_load_relaxed(&jl_fptr_compile_time);
}

/**
* @brief Enable per-task timing.
*/
Expand Down
1 change: 1 addition & 0 deletions src/julia_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,7 @@ static inline uint64_t cycleclock(void) JL_NOTSAFEPOINT
extern JL_DLLEXPORT _Atomic(uint8_t) jl_measure_compile_time_enabled;
extern JL_DLLEXPORT _Atomic(uint64_t) jl_cumulative_compile_time;
extern JL_DLLEXPORT _Atomic(uint64_t) jl_cumulative_recompile_time;
extern JL_DLLEXPORT _Atomic(uint64_t) jl_fptr_compile_time;

// Global *atomic* integer controlling *process-wide* task timing.
extern JL_DLLEXPORT _Atomic(uint8_t) jl_task_metrics_enabled;
Expand Down
2 changes: 2 additions & 0 deletions src/threading.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ JL_DLLEXPORT _Atomic(uint64_t) jl_cumulative_recompile_time = 0;

JL_DLLEXPORT _Atomic(uint8_t) jl_task_metrics_enabled = 0;

JL_DLLEXPORT _Atomic(uint64_t) jl_fptr_compile_time = 0;

JL_DLLEXPORT void *jl_get_ptls_states(void)
{
// mostly deprecated: use current_task instead
Expand Down