pub struct SelfProfilerRef { /* private fields */ }
Expand description
A reference to the SelfProfiler. It can be cloned and sent across thread boundaries at will.
Implementations§
source§impl SelfProfilerRef
impl SelfProfilerRef
pub fn new( profiler: Option<Arc<SelfProfiler>>, print_verbose_generic_activities: Option<TimePassesFormat> ) -> SelfProfilerRef
sourcepub fn verbose_generic_activity(
&self,
event_label: &'static str
) -> VerboseTimingGuard<'_>
pub fn verbose_generic_activity( &self, event_label: &'static str ) -> VerboseTimingGuard<'_>
Start profiling a verbose generic activity. Profiling continues until the VerboseTimingGuard returned from this call is dropped. In addition to recording a measureme event, “verbose” generic activities also print a timing entry to stderr if the compiler is invoked with -Ztime-passes.
sourcepub fn verbose_generic_activity_with_arg<A>(
&self,
event_label: &'static str,
event_arg: A
) -> VerboseTimingGuard<'_>
pub fn verbose_generic_activity_with_arg<A>( &self, event_label: &'static str, event_arg: A ) -> VerboseTimingGuard<'_>
Like verbose_generic_activity
, but with an extra arg.
sourcepub fn generic_activity(&self, event_label: &'static str) -> TimingGuard<'_>
pub fn generic_activity(&self, event_label: &'static str) -> TimingGuard<'_>
Start profiling a generic activity. Profiling continues until the TimingGuard returned from this call is dropped.
sourcepub fn generic_activity_with_event_id(
&self,
event_id: EventId
) -> TimingGuard<'_>
pub fn generic_activity_with_event_id( &self, event_id: EventId ) -> TimingGuard<'_>
Start profiling with some event filter for a given event. Profiling continues until the TimingGuard returned from this call is dropped.
sourcepub fn generic_activity_with_arg<A>(
&self,
event_label: &'static str,
event_arg: A
) -> TimingGuard<'_>
pub fn generic_activity_with_arg<A>( &self, event_label: &'static str, event_arg: A ) -> TimingGuard<'_>
Start profiling a generic activity. Profiling continues until the TimingGuard returned from this call is dropped.
sourcepub fn generic_activity_with_arg_recorder<F>(
&self,
event_label: &'static str,
f: F
) -> TimingGuard<'_>where
F: FnMut(&mut EventArgRecorder<'_>),
pub fn generic_activity_with_arg_recorder<F>(
&self,
event_label: &'static str,
f: F
) -> TimingGuard<'_>where
F: FnMut(&mut EventArgRecorder<'_>),
Start profiling a generic activity, allowing costly arguments to be recorded. Profiling
continues until the TimingGuard
returned from this call is dropped.
If the arguments to a generic activity are cheap to create, use generic_activity_with_arg
or generic_activity_with_args
for their simpler API. However, if they are costly or
require allocation in sufficiently hot contexts, then this allows for a closure to be called
only when arguments were asked to be recorded via -Z self-profile-events=args
.
In this case, the closure will be passed a &mut EventArgRecorder
, to help with recording
one or many arguments within the generic activity being profiled, by calling its
record_arg
method for example.
This EventArgRecorder
may implement more specific traits from other rustc crates, e.g. for
richer handling of rustc-specific argument types, while keeping this single entry-point API
for recording arguments.
Note: recording at least one argument is required for the self-profiler to create the
TimingGuard
. A panic will be triggered if that doesn’t happen. This function exists
explicitly to record arguments, so it fails loudly when there are none to record.
sourcepub fn artifact_size<A>(&self, artifact_kind: &str, artifact_name: A, size: u64)
pub fn artifact_size<A>(&self, artifact_kind: &str, artifact_name: A, size: u64)
Record the size of an artifact that the compiler produces
artifact_kind
is the class of artifact (e.g., query_cache, object_file, etc.)
artifact_name
is an identifier to the specific artifact being stored (usually a filename)
pub fn generic_activity_with_args( &self, event_label: &'static str, event_args: &[String] ) -> TimingGuard<'_>
sourcepub fn query_provider(&self) -> TimingGuard<'_>
pub fn query_provider(&self) -> TimingGuard<'_>
Start profiling a query provider. Profiling continues until the TimingGuard returned from this call is dropped.
sourcepub fn query_cache_hit(&self, query_invocation_id: QueryInvocationId)
pub fn query_cache_hit(&self, query_invocation_id: QueryInvocationId)
Record a query in-memory cache hit.
sourcepub fn query_blocked(&self) -> TimingGuard<'_>
pub fn query_blocked(&self) -> TimingGuard<'_>
Start profiling a query being blocked on a concurrent execution. Profiling continues until the TimingGuard returned from this call is dropped.
sourcepub fn incr_cache_loading(&self) -> TimingGuard<'_>
pub fn incr_cache_loading(&self) -> TimingGuard<'_>
Start profiling how long it takes to load a query result from the incremental compilation on-disk cache. Profiling continues until the TimingGuard returned from this call is dropped.
sourcepub fn incr_result_hashing(&self) -> TimingGuard<'_>
pub fn incr_result_hashing(&self) -> TimingGuard<'_>
Start profiling how long it takes to hash query results for incremental compilation. Profiling continues until the TimingGuard returned from this call is dropped.
pub fn with_profiler(&self, f: impl FnOnce(&SelfProfiler))
sourcepub fn get_or_alloc_cached_string(&self, s: &str) -> Option<StringId>
pub fn get_or_alloc_cached_string(&self, s: &str) -> Option<StringId>
Gets a StringId
for the given string. This method makes sure that
any strings going through it will only be allocated once in the
profiling data.
Returns None
if the self-profiling is not enabled.
pub fn enabled(&self) -> bool
pub fn llvm_recording_enabled(&self) -> bool
pub fn get_self_profiler(&self) -> Option<Arc<SelfProfiler>>
Trait Implementations§
source§impl Clone for SelfProfilerRef
impl Clone for SelfProfilerRef
source§fn clone(&self) -> SelfProfilerRef
fn clone(&self) -> SelfProfilerRef
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more