Skip to content

Commit cd8ec6c

Browse files
committed
Add note on optimization in format args ast lowering.
1 parent 8a23ad1 commit cd8ec6c

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

compiler/rustc_ast_lowering/src/format.rs

+3
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ fn expand_format_args<'hir>(
223223
// in order, we can use a simple array instead of a `match` construction.
224224
// However, if there's a yield point in any argument except the first one,
225225
// we don't do this, because an ArgumentV1 cannot be kept across yield points.
226+
//
227+
// This is an optimization, speeding up compilation about 1-2% in some cases.
228+
// See https://perf.rust-lang.org/compare.html?start=5dbee4d3a6728eb4530fb66c9775834438ecec74&end=e36affffe97378a0027b4bcfbb18d27356164ed0&stat=instructions:u
226229
let use_simple_array = argmap.len() == arguments.len()
227230
&& argmap.iter().enumerate().all(|(i, &(j, _))| i == j)
228231
&& arguments.iter().skip(1).all(|arg| !may_contain_yield_point(&arg.expr));

0 commit comments

Comments
 (0)