Integrate measureme's hardware performance counter support.
This commit is contained in:
parent
083721a1a7
commit
d76573abd1
4 changed files with 21 additions and 5 deletions
|
@ -550,14 +550,20 @@ impl SelfProfiler {
|
|||
pub fn new(
|
||||
output_directory: &Path,
|
||||
crate_name: Option<&str>,
|
||||
event_filters: &Option<Vec<String>>,
|
||||
event_filters: Option<&[String]>,
|
||||
counter_name: &str,
|
||||
) -> Result<SelfProfiler, Box<dyn Error + Send + Sync>> {
|
||||
fs::create_dir_all(output_directory)?;
|
||||
|
||||
let crate_name = crate_name.unwrap_or("unknown-crate");
|
||||
let filename = format!("{}-{}.rustc_profile", crate_name, process::id());
|
||||
// HACK(eddyb) we need to pad the PID, strange as it may seem, as its
|
||||
// length can behave as a source of entropy for heap addresses, when
|
||||
// ASLR is disabled and the heap is otherwise determinic.
|
||||
let pid: u32 = process::id();
|
||||
let filename = format!("{}-{:07}.rustc_profile", crate_name, pid);
|
||||
let path = output_directory.join(&filename);
|
||||
let profiler = Profiler::new(&path)?;
|
||||
let profiler =
|
||||
Profiler::with_counter(&path, measureme::counters::Counter::by_name(counter_name)?)?;
|
||||
|
||||
let query_event_kind = profiler.alloc_string("Query");
|
||||
let generic_activity_event_kind = profiler.alloc_string("GenericActivity");
|
||||
|
@ -570,7 +576,7 @@ impl SelfProfiler {
|
|||
|
||||
let mut event_filter_mask = EventFilter::empty();
|
||||
|
||||
if let Some(ref event_filters) = *event_filters {
|
||||
if let Some(event_filters) = event_filters {
|
||||
let mut unknown_events = vec![];
|
||||
for item in event_filters {
|
||||
if let Some(&(_, mask)) =
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue