[dart2js] Add Dart2JS input bytes as an internal metric.

Change-Id: Ib036b0511af2a54aa049f3638d9680fca3b77385
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/297701
Commit-Queue: Nate Biggs <natebiggs@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
This commit is contained in:
Nate Biggs 2023-04-24 19:43:04 +00:00 committed by Commit Queue
parent 2cdfc05568
commit 9a7f60b438
3 changed files with 29 additions and 2 deletions

View file

@ -220,6 +220,13 @@ class GenericTask extends CompilerTask {
GenericTask(this.name, Measurer measurer) : super(measurer);
}
class GenericTaskWithMetrics extends GenericTask {
@override
final Metrics metrics;
GenericTaskWithMetrics(super.name, super.measurer, this.metrics);
}
class Measurer {
/// Measures the total runtime from this object was constructed.
///

View file

@ -17,7 +17,8 @@ import 'common/codegen.dart';
import 'common/elements.dart' show ElementEnvironment;
import 'common/metrics.dart' show Metric;
import 'common/names.dart' show Selectors;
import 'common/tasks.dart' show CompilerTask, GenericTask, Measurer;
import 'common/tasks.dart'
show CompilerTask, GenericTask, GenericTaskWithMetrics, Measurer;
import 'common/work.dart' show WorkItem;
import 'deferred_load/deferred_load.dart' show DeferredLoadTask;
import 'deferred_load/output_unit.dart' show OutputUnitData;
@ -65,6 +66,7 @@ import 'resolution/enqueuer.dart';
import 'serialization/serialization.dart';
import 'serialization/task.dart';
import 'serialization/strategies.dart';
import 'source_file_provider.dart';
import 'universe/selector.dart' show Selector;
import 'universe/codegen_world_builder.dart';
import 'universe/resolution_world_builder.dart';
@ -110,6 +112,7 @@ class Compiler {
Map<Entity, WorldImpact> get impactCache => _impactCache;
late final Environment environment;
final DataReadMetrics dataReadMetrics = DataReadMetrics();
late final List<CompilerTask> tasks;
late final GenericTask loadKernelTask;
@ -175,7 +178,7 @@ class Compiler {
}
CompilerTask kernelFrontEndTask;
selfTask = GenericTask('self', measurer);
selfTask = GenericTaskWithMetrics('self', measurer, dataReadMetrics);
_outputProvider = _CompilerOutput(this, outputProvider);
_reporter = DiagnosticReporter(this);
kernelFrontEndTask = GenericTask('Front end', measurer);
@ -243,6 +246,7 @@ class Compiler {
} finally {
measurer.stopWallClock();
}
dataReadMetrics.addDataRead(provider);
if (options.verbose) {
var timings = StringBuffer();
computeTimings(setupDuration, timings);

View file

@ -12,6 +12,7 @@ import 'package:front_end/src/api_unstable/dart2js.dart' as fe;
import '../compiler_api.dart' as api;
import 'colors.dart' as colors;
import 'common/metrics.dart';
import 'io/source_file.dart';
abstract class SourceFileByteReader {
@ -624,3 +625,18 @@ class MultiRootInputProvider extends SourceFileProvider {
return result;
}
}
class DataReadMetrics extends MetricsBase {
@override
String get namespace => 'input';
CountMetric inputBytes = CountMetric('inputBytes');
void addDataRead(api.CompilerInput input) {
if (input is SourceFileProvider) {
inputBytes.add(input.bytesRead);
if (primary.isEmpty) {
primary = [inputBytes];
}
}
}
}