SelfProfilerRef in rustc_data_structures::profiling - Rust (original) (raw)

Struct SelfProfilerRef

Source

pub struct SelfProfilerRef {
    profiler: Option<Arc<SelfProfiler>>,
    event_filter_mask: EventFilter,
    print_verbose_generic_activities: Option<TimePassesFormat>,
}

Expand description

A reference to the SelfProfiler. It can be cloned and sent across thread boundaries at will.

Source§

Source

Source

This shim makes sure that calls only get executed if the filter mask lets them pass. It also contains some trickery to make sure that code is optimized for non-profiling compilation sessions, i.e. anything past the filter check is never inlined so it doesn’t clutter the fast path.

Source

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.

Source

Like verbose_generic_activity, but with an extra arg.

Source

Start profiling a generic activity. Profiling continues until the TimingGuard returned from this call is dropped.

Source

Start profiling with some event filter for a given event. Profiling continues until the TimingGuard returned from this call is dropped.

Source

Start profiling a generic activity. Profiling continues until the TimingGuard returned from this call is dropped.

Source

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_argor 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 itsrecord_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 theTimingGuard. 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.

Source

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)

Source

Source

Start profiling a query provider. Profiling continues until the TimingGuard returned from this call is dropped.

Source

Record a query in-memory cache hit.

Source

Start profiling a query being blocked on a concurrent execution. Profiling continues until the TimingGuard returned from this call is dropped.

Source

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.

Source

Start profiling how long it takes to hash query results for incremental compilation. Profiling continues until the TimingGuard returned from this call is dropped.

Source

Source

Source

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.

Source

Store query cache hits to the self-profile log. Should be called once at the end of the compilation session.

The cache hits are stored per query invocation, not per query kind/type.analyzeme can later deduplicate individual query labels from the QueryInvocationId event IDs.

Source

Source

Source

Source

Is expensive recording of query keys and/or function arguments enabled?

§

§

§

§

§

§

§

§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 16 bytes