mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Format metrics #21373
This commit is contained in:
parent
795e7f6002
commit
b3b188a6ff
1 changed files with 27 additions and 23 deletions
|
@ -64,14 +64,14 @@ fn set_metric<U: ProgressiveWebMetric>(
|
||||||
category: ProfilerCategory,
|
category: ProfilerCategory,
|
||||||
attr: &Cell<Option<u64>>,
|
attr: &Cell<Option<u64>>,
|
||||||
metric_time: Option<u64>,
|
metric_time: Option<u64>,
|
||||||
url: &ServoUrl)
|
url: &ServoUrl,
|
||||||
{
|
) {
|
||||||
let navigation_start = match pwm.get_navigation_start() {
|
let navigation_start = match pwm.get_navigation_start() {
|
||||||
Some(time) => time,
|
Some(time) => time,
|
||||||
None => {
|
None => {
|
||||||
warn!("Trying to set metric before navigation start");
|
warn!("Trying to set metric before navigation start");
|
||||||
return;
|
return;
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
let now = match metric_time {
|
let now = match metric_time {
|
||||||
Some(time) => time,
|
Some(time) => time,
|
||||||
|
@ -96,10 +96,12 @@ fn set_metric<U: ProgressiveWebMetric>(
|
||||||
|
|
||||||
// Print the metric to console if the print-pwm option was given.
|
// Print the metric to console if the print-pwm option was given.
|
||||||
if opts::get().print_pwm {
|
if opts::get().print_pwm {
|
||||||
println!("Navigation start: {}", pwm.get_navigation_start().unwrap().to_ms());
|
println!(
|
||||||
|
"Navigation start: {}",
|
||||||
|
pwm.get_navigation_start().unwrap().to_ms()
|
||||||
|
);
|
||||||
println!("{:?} {:?} {:?}", url, metric_type, time.to_ms());
|
println!("{:?} {:?} {:?}", url, metric_type, time.to_ms());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// spec: https://github.com/WICG/time-to-interactive
|
// spec: https://github.com/WICG/time-to-interactive
|
||||||
|
@ -120,7 +122,7 @@ pub struct InteractiveMetrics {
|
||||||
time_to_interactive: Cell<Option<u64>>,
|
time_to_interactive: Cell<Option<u64>>,
|
||||||
#[ignore_malloc_size_of = "can't measure channels"]
|
#[ignore_malloc_size_of = "can't measure channels"]
|
||||||
time_profiler_chan: ProfilerChan,
|
time_profiler_chan: ProfilerChan,
|
||||||
url: ServoUrl
|
url: ServoUrl,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, MallocSizeOf)]
|
#[derive(Clone, Copy, Debug, MallocSizeOf)]
|
||||||
|
@ -128,7 +130,6 @@ pub struct InteractiveWindow {
|
||||||
start: u64,
|
start: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
impl InteractiveWindow {
|
impl InteractiveWindow {
|
||||||
pub fn new() -> InteractiveWindow {
|
pub fn new() -> InteractiveWindow {
|
||||||
InteractiveWindow {
|
InteractiveWindow {
|
||||||
|
@ -194,11 +195,8 @@ impl InteractiveMetrics {
|
||||||
|
|
||||||
// can set either dlc or tti first, but both must be set to actually calc metric
|
// can set either dlc or tti first, but both must be set to actually calc metric
|
||||||
// when the second is set, set_tti is called with appropriate time
|
// when the second is set, set_tti is called with appropriate time
|
||||||
pub fn maybe_set_tti<T>(
|
pub fn maybe_set_tti<T>(&self, profiler_metadata_factory: &T, metric: InteractiveFlag)
|
||||||
&self,
|
where
|
||||||
profiler_metadata_factory: &T,
|
|
||||||
metric: InteractiveFlag,
|
|
||||||
) where
|
|
||||||
T: ProfilerMetadataFactory,
|
T: ProfilerMetadataFactory,
|
||||||
{
|
{
|
||||||
if self.get_tti().is_some() {
|
if self.get_tti().is_some() {
|
||||||
|
@ -212,7 +210,7 @@ impl InteractiveMetrics {
|
||||||
let dcl = self.dom_content_loaded.get();
|
let dcl = self.dom_content_loaded.get();
|
||||||
let mta = self.main_thread_available.get();
|
let mta = self.main_thread_available.get();
|
||||||
let (dcl, mta) = match (dcl, mta) {
|
let (dcl, mta) = match (dcl, mta) {
|
||||||
(Some(dcl), Some(mta)) => (dcl, mta),
|
(Some(dcl), Some(mta)) => (dcl, mta),
|
||||||
_ => return,
|
_ => return,
|
||||||
};
|
};
|
||||||
let metric_time = match dcl.partial_cmp(&mta) {
|
let metric_time = match dcl.partial_cmp(&mta) {
|
||||||
|
@ -249,7 +247,7 @@ impl ProgressiveWebMetric for InteractiveMetrics {
|
||||||
self.navigation_start = Some(time);
|
self.navigation_start = Some(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn send_queued_constellation_msg(&self, _name: ProgressiveWebMetricType, _time: u64) { }
|
fn send_queued_constellation_msg(&self, _name: ProgressiveWebMetricType, _time: u64) {}
|
||||||
|
|
||||||
fn get_time_profiler_chan(&self) -> &ProfilerChan {
|
fn get_time_profiler_chan(&self) -> &ProfilerChan {
|
||||||
&self.time_profiler_chan
|
&self.time_profiler_chan
|
||||||
|
@ -279,8 +277,8 @@ impl PaintTimeMetrics {
|
||||||
time_profiler_chan: ProfilerChan,
|
time_profiler_chan: ProfilerChan,
|
||||||
constellation_chan: IpcSender<LayoutMsg>,
|
constellation_chan: IpcSender<LayoutMsg>,
|
||||||
script_chan: IpcSender<ConstellationControlMsg>,
|
script_chan: IpcSender<ConstellationControlMsg>,
|
||||||
url: ServoUrl)
|
url: ServoUrl,
|
||||||
-> PaintTimeMetrics {
|
) -> PaintTimeMetrics {
|
||||||
PaintTimeMetrics {
|
PaintTimeMetrics {
|
||||||
pending_metrics: RefCell::new(HashMap::new()),
|
pending_metrics: RefCell::new(HashMap::new()),
|
||||||
navigation_start: None,
|
navigation_start: None,
|
||||||
|
@ -317,17 +315,22 @@ impl PaintTimeMetrics {
|
||||||
&self,
|
&self,
|
||||||
profiler_metadata_factory: &T,
|
profiler_metadata_factory: &T,
|
||||||
epoch: Epoch,
|
epoch: Epoch,
|
||||||
display_list: &DisplayList)
|
display_list: &DisplayList,
|
||||||
where T: ProfilerMetadataFactory {
|
) where
|
||||||
|
T: ProfilerMetadataFactory,
|
||||||
|
{
|
||||||
if self.first_paint.get().is_some() && self.first_contentful_paint.get().is_some() {
|
if self.first_paint.get().is_some() && self.first_contentful_paint.get().is_some() {
|
||||||
// If we already set all paint metrics, we just bail out.
|
// If we already set all paint metrics, we just bail out.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.pending_metrics.borrow_mut().insert(epoch, (
|
self.pending_metrics.borrow_mut().insert(
|
||||||
profiler_metadata_factory.new_metadata(),
|
epoch,
|
||||||
display_list.is_contentful(),
|
(
|
||||||
));
|
profiler_metadata_factory.new_metadata(),
|
||||||
|
display_list.is_contentful(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
// Send the pending metric information to the compositor thread.
|
// Send the pending metric information to the compositor thread.
|
||||||
// The compositor will record the current time after painting the
|
// The compositor will record the current time after painting the
|
||||||
|
@ -340,7 +343,8 @@ impl PaintTimeMetrics {
|
||||||
|
|
||||||
pub fn maybe_set_metric(&self, epoch: Epoch, paint_time: u64) {
|
pub fn maybe_set_metric(&self, epoch: Epoch, paint_time: u64) {
|
||||||
if self.first_paint.get().is_some() && self.first_contentful_paint.get().is_some() ||
|
if self.first_paint.get().is_some() && self.first_contentful_paint.get().is_some() ||
|
||||||
self.navigation_start.is_none() {
|
self.navigation_start.is_none()
|
||||||
|
{
|
||||||
// If we already set all paint metrics or we have not set navigation start yet,
|
// If we already set all paint metrics or we have not set navigation start yet,
|
||||||
// we just bail out.
|
// we just bail out.
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue