Crate fxprof_processed_profile
source ·Expand description
This crate allows you to create a profile that can be loaded into the Firefox Profiler.
Specifically, this uses the “Processed profile format”.
Use Profile::new
to create a new Profile
object. Then add all the
information into it. To convert it to JSON, use serde_json
, for
example serde_json::to_writer
or serde_json::to_string
.
Example
use fxprof_processed_profile::{Profile, CategoryHandle, CpuDelta, Frame, SamplingInterval, Timestamp};
use std::time::SystemTime;
let mut profile = Profile::new("My app", SystemTime::now().into(), SamplingInterval::from_millis(1));
let process = profile.add_process("App process", 54132, Timestamp::from_millis_since_reference(0.0));
let thread = profile.add_thread(process, 54132000, Timestamp::from_millis_since_reference(0.0), true);
profile.set_thread_name(thread, "Main thread");
let stack = vec![
(Frame::Label(profile.intern_string("Root node")), CategoryHandle::OTHER.into()),
(Frame::Label(profile.intern_string("First callee")), CategoryHandle::OTHER.into())
];
profile.add_sample(thread, Timestamp::from_millis_since_reference(0.0), stack.into_iter(), CpuDelta::ZERO, 1);
let writer = std::io::BufWriter::new(output_file);
serde_json::to_writer(writer, &profile)?;
Re-exports
pub use debugid;
Structs
A profiling category, can be set on stack frames and markers as part of a
CategoryPairHandle
.A profiling category pair, consisting of a category and an optional subcategory. Can be set on stack frames and markers.
The amount of CPU time between thread samples.
A library (“binary” / “module” / “DSO”) which is loaded into a process.
This can be the main executable file or a dynamic library, or any other
mapping of executable memory.
The field description of a marker field which can have a different value for each marker.
Describes a marker type.
The field description of a marker field which has the same key and value on all markers with this schema.
A process. Can be created with
Profile::add_process
.Stores the profile data and can be serialized as JSON, via
serde::Serialize
.A timestamp which anchors the profile in absolute time.
The sampling interval used during profile recording.
A handle for an interned string, returned from
Profile::intern_string
.A single symbol from a
SymbolTable
.A symbol table which contains a list of
Symbol
s, used in LibraryInfo
.A thread. Can be created with
Profile::add_thread
.The type used for sample and marker timestamps.
Enums
One of the available colors for a category.
A single stack frame.
The field format of a marker field.
The location of markers with this type.
The description of a marker field in the marker type’s schema.
Specifies timestamps for a marker.
Traits
The trait that all markers implement.