Skip to content

Commit 758091c

Browse files
authored
Rollup merge of #56918 - ljedrz:profiler_nits, r=wesleywiser
Profiler: simplify total_duration, improve readability r? @wesleywiser
2 parents 4bd8f2b + 826cda6 commit 758091c

File tree

1 file changed

+57
-62
lines changed
  • src/librustc_driver/profile

1 file changed

+57
-62
lines changed

src/librustc_driver/profile/mod.rs

Lines changed: 57 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,7 @@ struct StackFrame {
6464
}
6565

6666
fn total_duration(traces: &[trace::Rec]) -> Duration {
67-
let mut sum : Duration = Duration::new(0, 0);
68-
for t in traces.iter() { sum += t.dur_total; }
69-
return sum
67+
Duration::new(0, 0) + traces.iter().map(|t| t.dur_total).sum()
7068
}
7169

7270
// profiling thread; retains state (in local variables) and dump traces, upon request.
@@ -93,50 +91,48 @@ fn profile_queries_thread(r: Receiver<ProfileQueriesMsg>) {
9391
ProfileQueriesMsg::Dump(params) => {
9492
assert!(stack.is_empty());
9593
assert!(frame.parse_st == ParseState::Clear);
96-
{
97-
// write log of all messages
98-
if params.dump_profq_msg_log {
99-
let mut log_file =
100-
File::create(format!("{}.log.txt", params.path)).unwrap();
101-
for m in profq_msgs.iter() {
102-
writeln!(&mut log_file, "{:?}", m).unwrap()
103-
};
104-
}
10594

106-
// write HTML file, and counts file
107-
let html_path = format!("{}.html", params.path);
108-
let mut html_file = File::create(&html_path).unwrap();
95+
// write log of all messages
96+
if params.dump_profq_msg_log {
97+
let mut log_file =
98+
File::create(format!("{}.log.txt", params.path)).unwrap();
99+
for m in profq_msgs.iter() {
100+
writeln!(&mut log_file, "{:?}", m).unwrap()
101+
};
102+
}
109103

110-
let counts_path = format!("{}.counts.txt", params.path);
111-
let mut counts_file = File::create(&counts_path).unwrap();
104+
// write HTML file, and counts file
105+
let html_path = format!("{}.html", params.path);
106+
let mut html_file = File::create(&html_path).unwrap();
112107

113-
writeln!(html_file,
114-
"<html>\n<head>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"{}\">",
115-
"profile_queries.css").unwrap();
116-
writeln!(html_file, "<style>").unwrap();
117-
trace::write_style(&mut html_file);
118-
writeln!(html_file, "</style>\n</head>\n<body>").unwrap();
119-
trace::write_traces(&mut html_file, &mut counts_file, &frame.traces);
120-
writeln!(html_file, "</body>\n</html>").unwrap();
108+
let counts_path = format!("{}.counts.txt", params.path);
109+
let mut counts_file = File::create(&counts_path).unwrap();
121110

122-
let ack_path = format!("{}.ack", params.path);
123-
let ack_file = File::create(&ack_path).unwrap();
124-
drop(ack_file);
111+
writeln!(html_file,
112+
"<html>\n<head>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"{}\">",
113+
"profile_queries.css").unwrap();
114+
writeln!(html_file, "<style>").unwrap();
115+
trace::write_style(&mut html_file);
116+
writeln!(html_file, "</style>\n</head>\n<body>").unwrap();
117+
trace::write_traces(&mut html_file, &mut counts_file, &frame.traces);
118+
writeln!(html_file, "</body>\n</html>").unwrap();
125119

126-
// Tell main thread that we are done, e.g., so it can exit
127-
params.ack.send(()).unwrap();
128-
}
129-
continue
120+
let ack_path = format!("{}.ack", params.path);
121+
let ack_file = File::create(&ack_path).unwrap();
122+
drop(ack_file);
123+
124+
// Tell main thread that we are done, e.g., so it can exit
125+
params.ack.send(()).unwrap();
130126
}
131127
// Actual query message:
132128
msg => {
133129
// Record msg in our log
134130
profq_msgs.push(msg.clone());
135131
// Respond to the message, knowing that we've already handled Halt and Dump, above.
136132
match (frame.parse_st.clone(), msg) {
137-
(_,ProfileQueriesMsg::Halt) => unreachable!(),
138-
(_,ProfileQueriesMsg::Dump(_)) => unreachable!(),
139-
133+
(_, ProfileQueriesMsg::Halt) | (_, ProfileQueriesMsg::Dump(_)) => {
134+
unreachable!();
135+
},
140136
// Parse State: Clear
141137
(ParseState::Clear,
142138
ProfileQueriesMsg::QueryBegin(span, querymsg)) => {
@@ -163,8 +159,8 @@ fn profile_queries_thread(r: Receiver<ProfileQueriesMsg>) {
163159
ParseState::HaveQuery(q, start) => {
164160
let duration = start.elapsed();
165161
frame = StackFrame{
166-
parse_st:ParseState::Clear,
167-
traces:old_frame.traces
162+
parse_st: ParseState::Clear,
163+
traces: old_frame.traces
168164
};
169165
let dur_extent = total_duration(&provider_extent);
170166
let trace = Rec {
@@ -181,18 +177,16 @@ fn profile_queries_thread(r: Receiver<ProfileQueriesMsg>) {
181177
}
182178
}
183179
},
184-
185-
186180
(ParseState::Clear,
187181
ProfileQueriesMsg::TimeBegin(msg)) => {
188182
let start = Instant::now();
189183
frame.parse_st = ParseState::HaveTimeBegin(msg, start);
190184
stack.push(frame);
191-
frame = StackFrame{parse_st:ParseState::Clear, traces:vec![]};
185+
frame = StackFrame{parse_st: ParseState::Clear, traces: vec![]};
186+
},
187+
(_, ProfileQueriesMsg::TimeBegin(_)) => {
188+
panic!("parse error; did not expect time begin here");
192189
},
193-
(_, ProfileQueriesMsg::TimeBegin(_)) =>
194-
panic!("parse error; did not expect time begin here"),
195-
196190
(ParseState::Clear,
197191
ProfileQueriesMsg::TimeEnd) => {
198192
let provider_extent = frame.traces;
@@ -204,8 +198,8 @@ fn profile_queries_thread(r: Receiver<ProfileQueriesMsg>) {
204198
ParseState::HaveTimeBegin(msg, start) => {
205199
let duration = start.elapsed();
206200
frame = StackFrame{
207-
parse_st:ParseState::Clear,
208-
traces:old_frame.traces
201+
parse_st: ParseState::Clear,
202+
traces: old_frame.traces
209203
};
210204
let dur_extent = total_duration(&provider_extent);
211205
let trace = Rec {
@@ -222,18 +216,19 @@ fn profile_queries_thread(r: Receiver<ProfileQueriesMsg>) {
222216
}
223217
}
224218
},
225-
(_, ProfileQueriesMsg::TimeEnd) => { panic!("parse error") }
226-
219+
(_, ProfileQueriesMsg::TimeEnd) => {
220+
panic!("parse error")
221+
},
227222
(ParseState::Clear,
228223
ProfileQueriesMsg::TaskBegin(key)) => {
229224
let start = Instant::now();
230225
frame.parse_st = ParseState::HaveTaskBegin(key, start);
231226
stack.push(frame);
232-
frame = StackFrame{parse_st:ParseState::Clear, traces:vec![]};
227+
frame = StackFrame{ parse_st: ParseState::Clear, traces: vec![] };
228+
},
229+
(_, ProfileQueriesMsg::TaskBegin(_)) => {
230+
panic!("parse error; did not expect time begin here");
233231
},
234-
(_, ProfileQueriesMsg::TaskBegin(_)) =>
235-
panic!("parse error; did not expect time begin here"),
236-
237232
(ParseState::Clear,
238233
ProfileQueriesMsg::TaskEnd) => {
239234
let provider_extent = frame.traces;
@@ -245,8 +240,8 @@ fn profile_queries_thread(r: Receiver<ProfileQueriesMsg>) {
245240
ParseState::HaveTaskBegin(key, start) => {
246241
let duration = start.elapsed();
247242
frame = StackFrame{
248-
parse_st:ParseState::Clear,
249-
traces:old_frame.traces
243+
parse_st: ParseState::Clear,
244+
traces: old_frame.traces
250245
};
251246
let dur_extent = total_duration(&provider_extent);
252247
let trace = Rec {
@@ -263,8 +258,9 @@ fn profile_queries_thread(r: Receiver<ProfileQueriesMsg>) {
263258
}
264259
}
265260
},
266-
(_, ProfileQueriesMsg::TaskEnd) => { panic!("parse error") }
267-
261+
(_, ProfileQueriesMsg::TaskEnd) => {
262+
panic!("parse error")
263+
},
268264
// Parse State: HaveQuery
269265
(ParseState::HaveQuery(q,start),
270266
ProfileQueriesMsg::CacheHit) => {
@@ -279,26 +275,25 @@ fn profile_queries_thread(r: Receiver<ProfileQueriesMsg>) {
279275
frame.traces.push( trace );
280276
frame.parse_st = ParseState::Clear;
281277
},
282-
(ParseState::HaveQuery(_,_),
278+
(ParseState::HaveQuery(_, _),
283279
ProfileQueriesMsg::ProviderBegin) => {
284280
stack.push(frame);
285-
frame = StackFrame{parse_st:ParseState::Clear, traces:vec![]};
281+
frame = StackFrame{ parse_st: ParseState::Clear, traces: vec![] };
286282
},
287283

288284
// Parse errors:
289285

290-
(ParseState::HaveQuery(q,_),
286+
(ParseState::HaveQuery(q, _),
291287
ProfileQueriesMsg::ProviderEnd) => {
292288
panic!("parse error: unexpected ProviderEnd; \
293289
expected something else to follow BeginQuery for {:?}", q)
294290
},
295-
(ParseState::HaveQuery(q1,_),
296-
ProfileQueriesMsg::QueryBegin(span2,querymsg2)) => {
291+
(ParseState::HaveQuery(q1, _),
292+
ProfileQueriesMsg::QueryBegin(span2, querymsg2)) => {
297293
panic!("parse error: unexpected QueryBegin; \
298294
earlier query is unfinished: {:?} and now {:?}",
299-
q1, Query{span:span2, msg:querymsg2})
295+
q1, Query{span:span2, msg: querymsg2})
300296
},
301-
302297
(ParseState::HaveTimeBegin(_, _), _) => {
303298
unreachable!()
304299
},

0 commit comments

Comments
 (0)