Skip to content

Commit 3e30006

Browse files
authored
More largescenes stresstests fixes (#88)
* don't copy assets if they're already thre * configure linker for compression * don't panic on missing data
1 parent 541ae8c commit 3e30006

2 files changed

Lines changed: 223 additions & 193 deletions

File tree

src/metrics/large_scenes.rs

Lines changed: 119 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,22 @@ impl Metrics for LargeScene {
4242
if fs_extra::dir::copy(
4343
format!("/assets/{scene}"),
4444
format!("examples/large_scenes/{scene}/assets"),
45-
&fs_extra::dir::CopyOptions::new().copy_inside(true),
45+
&fs_extra::dir::CopyOptions::new()
46+
.copy_inside(true)
47+
.skip_exist(true),
4648
)
4749
.is_err()
4850
{
4951
return false;
5052
}
5153

5254
let sh = Shell::new().unwrap();
55+
if self
56+
.features
57+
.contains(&"mipmap_generator/compress".to_string())
58+
{
59+
sh.set_var("RUSTFLAGS", "-C linker=clang");
60+
}
5361
let mut features = self.features.clone();
5462
features.push("bevy/bevy_ci_testing".to_string());
5563
let features = features
@@ -103,6 +111,12 @@ impl Metrics for LargeScene {
103111
.unwrap();
104112
let sh = Shell::new().unwrap();
105113
sh.set_var("CI_TESTING_CONFIG", config);
114+
if self
115+
.features
116+
.contains(&"mipmap_generator/compress".to_string())
117+
{
118+
sh.set_var("RUSTFLAGS", "-C linker=clang");
119+
}
106120

107121
let parameters = self
108122
.parameters
@@ -165,74 +179,80 @@ impl Metrics for LargeScene {
165179
let gpu_memory = gpu_usage.iter().map(|v| v.mem as f32).collect::<Vec<_>>();
166180
let gpu_usage = gpu_usage.iter().map(|v| v.sm as f32).collect::<Vec<_>>();
167181

168-
results.insert(
169-
format!("{key}.cpu_usage.mean"),
170-
(statistical::mean(&cpu_usage) * 1000.0) as u64,
171-
);
172-
results.insert(
173-
format!("{key}.cpu_usage.median"),
174-
(statistical::median(&cpu_usage) * 1000.0) as u64,
175-
);
176-
results.insert(
177-
format!("{key}.cpu_usage.min"),
178-
cpu_usage.iter().map(|d| (d * 1000.0) as u64).min().unwrap(),
179-
);
180-
results.insert(
181-
format!("{key}.cpu_usage.max"),
182-
cpu_usage.iter().map(|d| (d * 1000.0) as u64).max().unwrap(),
183-
);
184-
results.insert(
185-
format!("{key}.cpu_usage.std_dev"),
186-
(statistical::standard_deviation(&cpu_usage, None) * 1000.0) as u64,
187-
);
188-
results.insert(
189-
format!("{key}.gpu_usage.mean"),
190-
(statistical::mean(&gpu_usage) * 1000.0) as u64,
191-
);
192-
results.insert(
193-
format!("{key}.gpu_usage.median"),
194-
(statistical::median(&gpu_usage) * 1000.0) as u64,
195-
);
196-
results.insert(
197-
format!("{key}.gpu_usage.min"),
198-
gpu_usage.iter().map(|d| (d * 1000.0) as u64).min().unwrap(),
199-
);
200-
results.insert(
201-
format!("{key}.gpu_usage.max"),
202-
gpu_usage.iter().map(|d| (d * 1000.0) as u64).max().unwrap(),
203-
);
204-
results.insert(
205-
format!("{key}.gpu_usage.std_dev"),
206-
(statistical::standard_deviation(&gpu_usage, None) * 1000.0) as u64,
207-
);
208-
results.insert(
209-
format!("{key}.gpu_memory.mean"),
210-
(statistical::mean(&gpu_memory) * 1000.0) as u64,
211-
);
212-
results.insert(
213-
format!("{key}.gpu_memory.median"),
214-
(statistical::median(&gpu_memory) * 1000.0) as u64,
215-
);
216-
results.insert(
217-
format!("{key}.gpu_memory.min"),
218-
gpu_memory
219-
.iter()
220-
.map(|d| (d * 1000.0) as u64)
221-
.min()
222-
.unwrap(),
223-
);
224-
results.insert(
225-
format!("{key}.gpu_memory.max"),
226-
gpu_memory
227-
.iter()
228-
.map(|d| (d * 1000.0) as u64)
229-
.max()
230-
.unwrap(),
231-
);
232-
results.insert(
233-
format!("{key}.gpu_memory.std_dev"),
234-
(statistical::standard_deviation(&gpu_memory, None) * 1000.0) as u64,
235-
);
182+
if cpu_usage.len() > 3 {
183+
results.insert(
184+
format!("{key}.cpu_usage.mean"),
185+
(statistical::mean(&cpu_usage) * 1000.0) as u64,
186+
);
187+
results.insert(
188+
format!("{key}.cpu_usage.median"),
189+
(statistical::median(&cpu_usage) * 1000.0) as u64,
190+
);
191+
results.insert(
192+
format!("{key}.cpu_usage.min"),
193+
cpu_usage.iter().map(|d| (d * 1000.0) as u64).min().unwrap(),
194+
);
195+
results.insert(
196+
format!("{key}.cpu_usage.max"),
197+
cpu_usage.iter().map(|d| (d * 1000.0) as u64).max().unwrap(),
198+
);
199+
results.insert(
200+
format!("{key}.cpu_usage.std_dev"),
201+
(statistical::standard_deviation(&cpu_usage, None) * 1000.0) as u64,
202+
);
203+
}
204+
if gpu_usage.len() > 3 {
205+
results.insert(
206+
format!("{key}.gpu_usage.mean"),
207+
(statistical::mean(&gpu_usage) * 1000.0) as u64,
208+
);
209+
results.insert(
210+
format!("{key}.gpu_usage.median"),
211+
(statistical::median(&gpu_usage) * 1000.0) as u64,
212+
);
213+
results.insert(
214+
format!("{key}.gpu_usage.min"),
215+
gpu_usage.iter().map(|d| (d * 1000.0) as u64).min().unwrap(),
216+
);
217+
results.insert(
218+
format!("{key}.gpu_usage.max"),
219+
gpu_usage.iter().map(|d| (d * 1000.0) as u64).max().unwrap(),
220+
);
221+
results.insert(
222+
format!("{key}.gpu_usage.std_dev"),
223+
(statistical::standard_deviation(&gpu_usage, None) * 1000.0) as u64,
224+
);
225+
}
226+
if gpu_memory.len() > 3 {
227+
results.insert(
228+
format!("{key}.gpu_memory.mean"),
229+
(statistical::mean(&gpu_memory) * 1000.0) as u64,
230+
);
231+
results.insert(
232+
format!("{key}.gpu_memory.median"),
233+
(statistical::median(&gpu_memory) * 1000.0) as u64,
234+
);
235+
results.insert(
236+
format!("{key}.gpu_memory.min"),
237+
gpu_memory
238+
.iter()
239+
.map(|d| (d * 1000.0) as u64)
240+
.min()
241+
.unwrap(),
242+
);
243+
results.insert(
244+
format!("{key}.gpu_memory.max"),
245+
gpu_memory
246+
.iter()
247+
.map(|d| (d * 1000.0) as u64)
248+
.max()
249+
.unwrap(),
250+
);
251+
results.insert(
252+
format!("{key}.gpu_memory.std_dev"),
253+
(statistical::standard_deviation(&gpu_memory, None) * 1000.0) as u64,
254+
);
255+
}
236256
results.insert(format!("{key}.duration"), elapsed.as_millis() as u64);
237257
results.insert(format!("{key}.frames"), self.nb_frames as u64);
238258

@@ -258,34 +278,36 @@ impl Metrics for LargeScene {
258278
.flat_map(|record| record.get(1).unwrap().parse::<f32>())
259279
.collect::<Vec<_>>();
260280

261-
results.insert(
262-
format!("{key}.frame_time.mean"),
263-
(statistical::mean(&frame_times) * 1000.0) as u64,
264-
);
265-
results.insert(
266-
format!("{key}.frame_time.median"),
267-
(statistical::median(&frame_times) * 1000.0) as u64,
268-
);
269-
results.insert(
270-
format!("{key}.frame_time.min"),
271-
frame_times
272-
.iter()
273-
.map(|d| (d * 1000.0) as u64)
274-
.min()
275-
.unwrap(),
276-
);
277-
results.insert(
278-
format!("{key}.frame_time.max"),
279-
frame_times
280-
.iter()
281-
.map(|d| (d * 1000.0) as u64)
282-
.max()
283-
.unwrap(),
284-
);
285-
results.insert(
286-
format!("{key}.frame_time.std_dev"),
287-
(statistical::standard_deviation(&frame_times, None) * 1000.0) as u64,
288-
);
281+
if !frame_times.len() > 3 {
282+
results.insert(
283+
format!("{key}.frame_time.mean"),
284+
(statistical::mean(&frame_times) * 1000.0) as u64,
285+
);
286+
results.insert(
287+
format!("{key}.frame_time.median"),
288+
(statistical::median(&frame_times) * 1000.0) as u64,
289+
);
290+
results.insert(
291+
format!("{key}.frame_time.min"),
292+
frame_times
293+
.iter()
294+
.map(|d| (d * 1000.0) as u64)
295+
.min()
296+
.unwrap(),
297+
);
298+
results.insert(
299+
format!("{key}.frame_time.max"),
300+
frame_times
301+
.iter()
302+
.map(|d| (d * 1000.0) as u64)
303+
.max()
304+
.unwrap(),
305+
);
306+
results.insert(
307+
format!("{key}.frame_time.std_dev"),
308+
(statistical::standard_deviation(&frame_times, None) * 1000.0) as u64,
309+
);
310+
}
289311
}
290312

291313
results

0 commit comments

Comments
 (0)