mirror of
https://github.com/servo/servo.git
synced 2025-08-08 23:15:33 +01:00
Add energy monitoring and characterization scripts
This commit is contained in:
parent
0d37e8f96b
commit
3c25f47dbc
11 changed files with 834 additions and 5 deletions
|
@ -5,6 +5,7 @@
|
|||
extern crate time as std_time;
|
||||
extern crate url;
|
||||
|
||||
use energy::read_energy_uj;
|
||||
use ipc_channel::ipc::IpcSender;
|
||||
use self::std_time::precise_time_ns;
|
||||
use self::url::Url;
|
||||
|
@ -29,7 +30,7 @@ impl ProfilerChan {
|
|||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub enum ProfilerMsg {
|
||||
/// Normal message used for reporting time
|
||||
Time((ProfilerCategory, Option<TimerMetadata>), (u64, u64)),
|
||||
Time((ProfilerCategory, Option<TimerMetadata>), (u64, u64), (u64, u64)),
|
||||
/// Message used to force print the profiling metrics
|
||||
Print,
|
||||
/// Tells the profiler to shut down.
|
||||
|
@ -72,6 +73,7 @@ pub enum ProfilerCategory {
|
|||
ScriptWebSocketEvent,
|
||||
ScriptWorkerEvent,
|
||||
ScriptXhrEvent,
|
||||
ApplicationHeartbeat,
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq)]
|
||||
|
@ -96,15 +98,19 @@ pub fn profile<T, F>(category: ProfilerCategory,
|
|||
-> T
|
||||
where F: FnOnce() -> T
|
||||
{
|
||||
let start_energy = read_energy_uj();
|
||||
let start_time = precise_time_ns();
|
||||
let val = callback();
|
||||
let end_time = precise_time_ns();
|
||||
let end_energy = read_energy_uj();
|
||||
let meta = meta.map(|(url, iframe, reflow_type)|
|
||||
TimerMetadata {
|
||||
url: url.serialize(),
|
||||
iframe: iframe == TimerMetadataFrameType::IFrame,
|
||||
incremental: reflow_type == TimerMetadataReflowType::Incremental,
|
||||
});
|
||||
profiler_chan.send(ProfilerMsg::Time((category, meta), (start_time, end_time)));
|
||||
profiler_chan.send(ProfilerMsg::Time((category, meta),
|
||||
(start_time, end_time),
|
||||
(start_energy, end_energy)));
|
||||
return val;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue