MCPcopy Create free account
hub / github.com/PerroEngine/Perro / resumed

Method resumed

perro_source/render_stack/perro_graphics/benches/gpu_frame.rs:129–164  ·  view source on GitHub ↗
(&mut self, event_loop: &ActiveEventLoop)

Source from the content-addressed store, hash-verified

127 }
128
129 fn percentile_us(values: &[Duration], percentile: f64) -> f64 {
130 if values.is_empty() {
131 return 0.0;
132 }
133 let mut nanos: Vec<u128> = values.iter().map(Duration::as_nanos).collect();
134 nanos.sort_unstable();
135 let index = ((nanos.len() - 1) as f64 * percentile).ceil() as usize;
136 nanos[index] as f64 / 1_000.0
137 }
138
139 fn percentile_u32(values: &[u32], percentile: f64) -> u32 {
140 if values.is_empty() {
141 return 0;
142 }
143 let mut sorted = values.to_vec();
144 sorted.sort_unstable();
145 let index = ((sorted.len() - 1) as f64 * percentile).ceil() as usize;
146 sorted[index]
147 }
148
149 fn print(&self, name: &str) {
150 let frames = self.frames.max(1);
151 println!(
152 "{name:32} total={:>6}us wait={:>6}us gpuq={:>6}us water={:>5}us shadow={:>5}us cpu_prep={:>5}us gpu2d={:>5}us gpu3d={:>5}us acquire={:>5}us encode={:>5}us submit={:>5}us post={:>5}us present={:>5}us dc2d={:>3} dc3d={:>3} inst3d={:>7} skip3d={:>3}/{:<3} scene_pass={:>3} shadow_layers={:>3} shadow_dc={:>4} gpuq_med={:>8.1}us gpuq_p95={:>8.1}us acq_med={:>7.1}us sub_med={:>7.1}us prs_med={:>7.1}us cpu_med={:>7.1}us cpu_p95={:>7.1}us enc_med={:>7.1}us enc_p95={:>7.1}us pipe_med={:>3} pipe_p95={:>3}",
153 Self::avg_us(self.total, frames),
154 Self::avg_us(self.wait_idle, frames),
155 Self::avg_us(self.gpu_main, frames),
156 Self::avg_us(self.gpu_water, frames),
157 Self::avg_us(self.gpu_shadow, frames),
158 Self::avg_us(self.prepare_cpu, frames),
159 Self::avg_us(self.gpu_prepare_2d, frames),
160 Self::avg_us(self.gpu_prepare_3d, frames),
161 Self::avg_us(self.acquire, frames),
162 Self::avg_us(self.encode, frames),
163 Self::avg_us(self.submit, frames),
164 Self::avg_us(self.post, frames),
165 Self::avg_us(self.present, frames),
166 self.draw_calls_2d / frames,
167 self.draw_calls_3d / frames,

Callers

nothing calls this directly

Calls 9

cloneMethod · 0.80
expectMethod · 0.45
as_refMethod · 0.45
containsMethod · 0.45
draw_frame_timedMethod · 0.45
addMethod · 0.45
wait_idleMethod · 0.45
add_wait_idleMethod · 0.45
printMethod · 0.45

Tested by

no test coverage detected