Skip to content

Commit f88851c

Browse files
committed
Move user and system time
1 parent 92d79f7 commit f88851c

File tree

6 files changed

+106
-42
lines changed

6 files changed

+106
-42
lines changed

src/benchmark/benchmark_result.rs

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ use crate::util::{
1010

1111
#[derive(Debug, Default, Clone, Serialize, PartialEq)]
1212
pub struct BenchmarkRun {
13+
/// Wall clock time measurement
1314
pub wall_clock_time: Second,
14-
// user_time: Second,
15-
// system_time: Second,
15+
16+
/// Time spent in user mode
17+
pub user_time: Second,
18+
19+
/// Time spent in kernel mode
20+
pub system_time: Second,
1621
}
1722

1823
/// Set of values that will be exported.
@@ -28,12 +33,6 @@ pub struct BenchmarkResult {
2833
#[serde(skip_serializing)]
2934
pub command_with_unused_parameters: String,
3035

31-
/// Time spent in user mode
32-
pub user: Second,
33-
34-
/// Time spent in kernel mode
35-
pub system: Second,
36-
3736
/// All run time measurements
3837
pub runs: Vec<BenchmarkRun>,
3938

@@ -85,4 +84,24 @@ impl BenchmarkResult {
8584
pub fn max(&self) -> Second {
8685
max(&self.wall_clock_times())
8786
}
87+
88+
pub fn user_mean(&self) -> Second {
89+
mean(
90+
&self
91+
.runs
92+
.iter()
93+
.map(|run| run.user_time)
94+
.collect::<Vec<_>>(),
95+
)
96+
}
97+
98+
pub fn system_mean(&self) -> Second {
99+
mean(
100+
&self
101+
.runs
102+
.iter()
103+
.map(|run| run.system_time)
104+
.collect::<Vec<_>>(),
105+
)
106+
}
88107
}

src/benchmark/mod.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -446,12 +446,13 @@ impl<'a> Benchmark<'a> {
446446
Ok(BenchmarkResult {
447447
command: self.command.get_name(),
448448
command_with_unused_parameters: self.command.get_name_with_unused_parameters(),
449-
user: user_mean,
450-
system: system_mean,
451449
runs: times_real
452450
.iter()
453-
.map(|t| BenchmarkRun {
454-
wall_clock_time: *t,
451+
.zip(times_user.iter().zip(times_system.iter()))
452+
.map(|(wall_clock_time, (user_time, system_time))| BenchmarkRun {
453+
wall_clock_time: *wall_clock_time,
454+
user_time: *user_time,
455+
system_time: *system_time,
455456
})
456457
.collect(),
457458
memory_usage_byte: Some(memory_usage_byte),

src/benchmark/relative_speed.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,10 @@ fn create_result(name: &str, mean: Scalar) -> BenchmarkResult {
127127
BenchmarkResult {
128128
command: name.into(),
129129
command_with_unused_parameters: name.into(),
130-
user: mean,
131-
system: 0.0,
132130
runs: vec![BenchmarkRun {
133131
wall_clock_time: mean,
132+
user_time: mean,
133+
system_time: 0.,
134134
}],
135135
memory_usage_byte: None,
136136
exit_codes: Vec::new(),

src/benchmark/scheduler.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,23 +189,27 @@ fn generate_results(args: &[&'static str]) -> Result<Vec<BenchmarkResult>> {
189189
fn scheduler_basic() -> Result<()> {
190190
insta::assert_yaml_snapshot!(generate_results(&["--runs=2", "sleep 0.123", "sleep 0.456"])?, @r#"
191191
- command: sleep 0.123
192-
user: 0
193-
system: 0
194192
runs:
195193
- wall_clock_time: 0.123
194+
user_time: 0
195+
system_time: 0
196196
- wall_clock_time: 0.123
197+
user_time: 0
198+
system_time: 0
197199
memory_usage_byte:
198200
- 0
199201
- 0
200202
exit_codes:
201203
- 0
202204
- 0
203205
- command: sleep 0.456
204-
user: 0
205-
system: 0
206206
runs:
207207
- wall_clock_time: 0.456
208+
user_time: 0
209+
system_time: 0
208210
- wall_clock_time: 0.456
211+
user_time: 0
212+
system_time: 0
209213
memory_usage_byte:
210214
- 0
211215
- 0

src/export/csv.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ impl Exporter for CsvExporter {
4343
res.mean(),
4444
res.stddev().unwrap_or(0.0),
4545
res.median(),
46-
res.user,
47-
res.system,
46+
res.user_mean(),
47+
res.system_mean(),
4848
res.min(),
4949
res.max(),
5050
] {
@@ -72,17 +72,21 @@ fn test_csv() {
7272
BenchmarkResult {
7373
command: String::from("command_a"),
7474
command_with_unused_parameters: String::from("command_a"),
75-
user: 3.0,
76-
system: 4.0,
7775
runs: vec![
7876
BenchmarkRun {
7977
wall_clock_time: 7.0,
78+
user_time: 7.0,
79+
system_time: 0.0,
8080
},
8181
BenchmarkRun {
8282
wall_clock_time: 8.0,
83+
user_time: 8.0,
84+
system_time: 0.0,
8385
},
8486
BenchmarkRun {
8587
wall_clock_time: 12.0,
88+
user_time: 12.0,
89+
system_time: 0.0,
8690
},
8791
],
8892
memory_usage_byte: None,
@@ -97,17 +101,21 @@ fn test_csv() {
97101
BenchmarkResult {
98102
command: String::from("command_b"),
99103
command_with_unused_parameters: String::from("command_b"),
100-
user: 13.0,
101-
system: 14.0,
102104
runs: vec![
103105
BenchmarkRun {
104106
wall_clock_time: 17.0,
107+
user_time: 17.0,
108+
system_time: 0.0,
105109
},
106110
BenchmarkRun {
107111
wall_clock_time: 18.0,
112+
user_time: 18.0,
113+
system_time: 0.0,
108114
},
109115
BenchmarkRun {
110116
wall_clock_time: 19.0,
117+
user_time: 19.0,
118+
system_time: 0.0,
111119
},
112120
],
113121
memory_usage_byte: None,
@@ -130,7 +138,7 @@ fn test_csv() {
130138

131139
insta::assert_snapshot!(actual, @r#"
132140
command,mean,stddev,median,user,system,min,max,parameter_bar,parameter_foo
133-
command_a,9,2.6457513110645907,8,3,4,7,12,two,one
134-
command_b,18,1,18,13,14,17,19,seven,one
141+
command_a,9,2.6457513110645907,8,9,0,7,12,two,one
142+
command_b,18,1,18,18,0,17,19,seven,one
135143
"#);
136144
}

src/export/tests.rs

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,21 @@ fn test_markup_export_auto_ms() {
2727
BenchmarkResult {
2828
command: String::from("sleep 0.1"),
2929
command_with_unused_parameters: String::from("sleep 0.1"),
30-
user: 0.0009,
31-
system: 0.0011,
3230
runs: vec![
3331
BenchmarkRun {
3432
wall_clock_time: 0.09,
33+
user_time: 0.09,
34+
system_time: 0.,
3535
},
3636
BenchmarkRun {
3737
wall_clock_time: 0.10,
38+
user_time: 0.10,
39+
system_time: 0.,
3840
},
3941
BenchmarkRun {
4042
wall_clock_time: 0.14,
43+
user_time: 0.14,
44+
system_time: 0.,
4145
},
4246
],
4347
memory_usage_byte: None,
@@ -47,17 +51,21 @@ fn test_markup_export_auto_ms() {
4751
BenchmarkResult {
4852
command: String::from("sleep 2"),
4953
command_with_unused_parameters: String::from("sleep 2"),
50-
user: 0.0009,
51-
system: 0.0012,
5254
runs: vec![
5355
BenchmarkRun {
5456
wall_clock_time: 2.0,
57+
user_time: 2.0,
58+
system_time: 0.,
5559
},
5660
BenchmarkRun {
5761
wall_clock_time: 3.0,
62+
user_time: 3.0,
63+
system_time: 0.,
5864
},
5965
BenchmarkRun {
6066
wall_clock_time: 4.0,
67+
user_time: 4.0,
68+
system_time: 0.,
6169
},
6270
],
6371
memory_usage_byte: None,
@@ -112,17 +120,21 @@ fn test_markup_export_auto_s() {
112120
BenchmarkResult {
113121
command: String::from("sleep 2"),
114122
command_with_unused_parameters: String::from("sleep 2"),
115-
user: 0.0009,
116-
system: 0.0012,
117123
runs: vec![
118124
BenchmarkRun {
119125
wall_clock_time: 2.1,
126+
user_time: 2.1,
127+
system_time: 0.,
120128
},
121129
BenchmarkRun {
122130
wall_clock_time: 2.2,
131+
user_time: 2.2,
132+
system_time: 0.,
123133
},
124134
BenchmarkRun {
125135
wall_clock_time: 2.3,
136+
user_time: 2.3,
137+
system_time: 0.,
126138
},
127139
],
128140
memory_usage_byte: None,
@@ -132,17 +144,21 @@ fn test_markup_export_auto_s() {
132144
BenchmarkResult {
133145
command: String::from("sleep 0.1"),
134146
command_with_unused_parameters: String::from("sleep 0.1"),
135-
user: 0.0009,
136-
system: 0.0011,
137147
runs: vec![
138148
BenchmarkRun {
139149
wall_clock_time: 0.1,
150+
user_time: 0.1,
151+
system_time: 0.,
140152
},
141153
BenchmarkRun {
142154
wall_clock_time: 0.2,
155+
user_time: 0.2,
156+
system_time: 0.,
143157
},
144158
BenchmarkRun {
145159
wall_clock_time: 0.3,
160+
user_time: 0.3,
161+
system_time: 0.,
146162
},
147163
],
148164
memory_usage_byte: None,
@@ -197,17 +213,21 @@ fn test_markup_export_manual_ms() {
197213
BenchmarkResult {
198214
command: String::from("sleep 2"),
199215
command_with_unused_parameters: String::from("sleep 2"),
200-
user: 0.0009,
201-
system: 0.0012,
202216
runs: vec![
203217
BenchmarkRun {
204218
wall_clock_time: 2.1,
219+
user_time: 2.1,
220+
system_time: 0.,
205221
},
206222
BenchmarkRun {
207223
wall_clock_time: 2.2,
224+
user_time: 2.2,
225+
system_time: 0.,
208226
},
209227
BenchmarkRun {
210228
wall_clock_time: 2.3,
229+
user_time: 2.3,
230+
system_time: 0.,
211231
},
212232
],
213233
memory_usage_byte: None,
@@ -217,17 +237,21 @@ fn test_markup_export_manual_ms() {
217237
BenchmarkResult {
218238
command: String::from("sleep 0.1"),
219239
command_with_unused_parameters: String::from("sleep 0.1"),
220-
user: 0.0009,
221-
system: 0.0011,
222240
runs: vec![
223241
BenchmarkRun {
224242
wall_clock_time: 0.1,
243+
user_time: 0.1,
244+
system_time: 0.,
225245
},
226246
BenchmarkRun {
227247
wall_clock_time: 0.2,
248+
user_time: 0.2,
249+
system_time: 0.,
228250
},
229251
BenchmarkRun {
230252
wall_clock_time: 0.3,
253+
user_time: 0.3,
254+
system_time: 0.,
231255
},
232256
],
233257
memory_usage_byte: None,
@@ -281,17 +305,21 @@ fn test_markup_export_manual_s() {
281305
BenchmarkResult {
282306
command: String::from("sleep 2"),
283307
command_with_unused_parameters: String::from("sleep 2"),
284-
user: 0.0009,
285-
system: 0.0012,
286308
runs: vec![
287309
BenchmarkRun {
288310
wall_clock_time: 2.01,
311+
user_time: 2.01,
312+
system_time: 0.,
289313
},
290314
BenchmarkRun {
291315
wall_clock_time: 2.02,
316+
user_time: 2.02,
317+
system_time: 0.,
292318
},
293319
BenchmarkRun {
294320
wall_clock_time: 2.03,
321+
user_time: 2.03,
322+
system_time: 0.,
295323
},
296324
],
297325
memory_usage_byte: None,
@@ -301,17 +329,21 @@ fn test_markup_export_manual_s() {
301329
BenchmarkResult {
302330
command: String::from("sleep 0.1"),
303331
command_with_unused_parameters: String::from("sleep 0.1"),
304-
user: 0.0009,
305-
system: 0.0011,
306332
runs: vec![
307333
BenchmarkRun {
308334
wall_clock_time: 0.11,
335+
user_time: 0.11,
336+
system_time: 0.,
309337
},
310338
BenchmarkRun {
311339
wall_clock_time: 0.12,
340+
user_time: 0.12,
341+
system_time: 0.,
312342
},
313343
BenchmarkRun {
314344
wall_clock_time: 0.13,
345+
user_time: 0.13,
346+
system_time: 0.,
315347
},
316348
],
317349
memory_usage_byte: None,

0 commit comments

Comments
 (0)