Skip to content

Commit dfba8a7

Browse files
jensjohaCommit Queue
authored andcommitted
[CFE] Remove more allocation from iterators
These are from `_Array.iterator` whereas the previous ones was from, iirc, `List.iterator`. * 7.41mb Import.finalizeImports * 1.13mb FindTypeVisitor.visitInterfaceType * 856.39kb new NamedTypeBuilderImpl * 815.92kb BodyBuilder.createSuperParametersAsArguments (values from uprobe) When compiling the CFE with the CFE I get this: ``` msec task-clock:u: -5.6347% +/- 0.5257% (-321.96 +/- 30.04) (5713.89 -> 5391.92) page-faults:u: 5.9842% +/- 0.0970% (6310.26 +/- 102.33) (105449.48 -> 111759.74) cycles:u: -6.0829% +/- 0.5338% (-1447602857.06 +/- 127036484.81) (23797839542.02 -> 22350236684.96) instructions:u: -4.9550% +/- 0.0008% (-1364113249.40 +/- 214444.14) (27529935457.16 -> 26165822207.76) branch-misses:u: -5.7909% +/- 2.2880% (-5395643.76 +/- 2131857.44) (93173948.12 -> 87778304.36) seconds time elapsed: -5.6275% +/- 0.5257% (-0.32 +/- 0.03) (5.72 -> 5.40) seconds user: -6.0582% +/- 0.5861% (-0.33 +/- 0.03) (5.47 -> 5.13) Scavenge( new space) goes from 63 to 61 Evacuate(store buffer) goes from 2 to 3 MarkSweep( old space) goes from 1 to 0 ``` As before the changes here are mostly "bogus" and likely caused by the GC being weird, see also https://dart-review.googlesource.com/c/sdk/+/438722 and https://dart-review.googlesource.com/c/sdk/+/438681. It does seem to consistently change the number of new space GCs though (65 -> 63 -> (here) 61). Change-Id: I18ef712394c1d98b8ed15c7fe6c4ac32fa9bc2e3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/438682 Commit-Queue: Jens Johansen <[email protected]> Reviewed-by: Chloe Stefantsova <[email protected]>
1 parent f3d278b commit dfba8a7

File tree

4 files changed

+9
-4
lines changed

4 files changed

+9
-4
lines changed

pkg/front_end/lib/src/base/import.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,9 @@ class Import {
9898
String name = member.name;
9999
bool include = true;
100100
if (combinators != null) {
101-
for (CombinatorBuilder combinator in combinators!) {
101+
List<CombinatorBuilder> combinators = this.combinators!;
102+
for (int i = 0; i < combinators.length; i++) {
103+
CombinatorBuilder combinator = combinators[i];
102104
if (combinator.isShow && !combinator.names.contains(name)) {
103105
include = false;
104106
break;

pkg/front_end/lib/src/builder/named_type_builder.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ abstract class NamedTypeBuilderImpl extends NamedTypeBuilder {
130130
required InstanceTypeParameterAccessState instanceTypeParameterAccess}) {
131131
bool isExplicit = true;
132132
if (arguments != null) {
133-
for (TypeBuilder argument in arguments) {
133+
for (int i = 0; i < arguments.length; i++) {
134+
TypeBuilder argument = arguments[i];
134135
if (!argument.isExplicit) {
135136
isExplicit = false;
136137
}

pkg/front_end/lib/src/kernel/body_builder.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,8 @@ class BodyBuilder extends StackListenerImpl
11531153
List<Object>? createSuperParametersAsArguments(
11541154
List<FormalParameterBuilder> formals) {
11551155
List<Object>? superParametersAsArguments;
1156-
for (FormalParameterBuilder formal in formals) {
1156+
for (int i = 0; i < formals.length; i++) {
1157+
FormalParameterBuilder formal = formals[i];
11571158
if (formal.isSuperInitializingFormal) {
11581159
if (formal.isNamed) {
11591160
(superParametersAsArguments ??= <Object>[]).add(new NamedExpression(

pkg/kernel/lib/src/find_type_visitor.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class FindTypeVisitor implements DartTypeVisitor<bool> {
3131

3232
@override
3333
bool visitInterfaceType(InterfaceType node) {
34-
for (DartType typeArgument in node.typeArguments) {
34+
for (int i = 0; i < node.typeArguments.length; i++) {
35+
DartType typeArgument = node.typeArguments[i];
3536
if (typeArgument.accept(this)) return true;
3637
}
3738
return false;

0 commit comments

Comments
 (0)