1
Fork 0

use cfg_if! and use FileSerializationSink for wasi

This commit is contained in:
Cameron Taggart 2020-04-21 13:07:05 -06:00
parent 6fb524a455
commit f72de476b7

View file

@ -97,14 +97,27 @@ use std::time::{Duration, Instant};
use measureme::{EventId, EventIdBuilder, SerializableString, StringId}; use measureme::{EventId, EventIdBuilder, SerializableString, StringId};
use parking_lot::RwLock; use parking_lot::RwLock;
/// MmapSerializatioSink is faster on macOS and Linux cfg_if! {
/// but FileSerializationSink is faster on Windows if #[cfg(target_arch = "wasm32")] {
#[cfg(all(not(windows), not(target_arch = "wasm32")))] cfg_if! {
type SerializationSink = measureme::MmapSerializationSink; if #[cfg(target_os = "wasi")] {
#[cfg(all(windows, not(target_arch = "wasm32")))]
type SerializationSink = measureme::FileSerializationSink; type SerializationSink = measureme::FileSerializationSink;
#[cfg(target_arch = "wasm32")] } else {
type SerializationSink = measureme::ByteVecSink; type SerializationSink = measureme::ByteVecSink;
}
}
} else {
cfg_if! {
if #[cfg(windows)] {
/// FileSerializationSink is faster on Windows
type SerializationSink = measureme::FileSerializationSink;
} else {
/// MmapSerializatioSink is faster on macOS and Linux
type SerializationSink = measureme::MmapSerializationSink;
}
}
}
}
type Profiler = measureme::Profiler<SerializationSink>; type Profiler = measureme::Profiler<SerializationSink>;
@ -604,17 +617,14 @@ pub fn duration_to_secs_str(dur: std::time::Duration) -> String {
} }
// Memory reporting // Memory reporting
#[cfg(all(unix, not(target_arch = "wasm32")))] cfg_if! {
if #[cfg(target_arch = "wasm32")] {
fn get_resident() -> Option<usize> { fn get_resident() -> Option<usize> {
let field = 1; None
let contents = fs::read("/proc/self/statm").ok()?;
let contents = String::from_utf8(contents).ok()?;
let s = contents.split_whitespace().nth(field)?;
let npages = s.parse::<usize>().ok()?;
Some(npages * 4096)
} }
} else {
#[cfg(all(windows, not(target_arch = "wasm32")))] cfg_if! {
if #[cfg(windows)] {
fn get_resident() -> Option<usize> { fn get_resident() -> Option<usize> {
use std::mem::{self, MaybeUninit}; use std::mem::{self, MaybeUninit};
use winapi::shared::minwindef::DWORD; use winapi::shared::minwindef::DWORD;
@ -632,8 +642,16 @@ fn get_resident() -> Option<usize> {
} }
} }
} }
} else {
#[cfg(target_arch = "wasm32")]
fn get_resident() -> Option<usize> { fn get_resident() -> Option<usize> {
None let field = 1;
let contents = fs::read("/proc/self/statm").ok()?;
let contents = String::from_utf8(contents).ok()?;
let s = contents.split_whitespace().nth(field)?;
let npages = s.parse::<usize>().ok()?;
Some(npages * 4096)
}
}
}
}
} }