e4c8b49dcc
Change-Id: I1362ada67a02b0ed352612fc29c727e94d8cd254 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/394901 Commit-Queue: Daco Harkes <dacoharkes@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Daco Harkes <dacoharkes@google.com>
119 lines
4.1 KiB
Dart
119 lines
4.1 KiB
Dart
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
//
|
|
// A benchmark that contains several other benchmarks.
|
|
//
|
|
// With no arguments, run all benchmarks once.
|
|
// With arguments, run only the specified benchmarks in command-line order.
|
|
//
|
|
// -N: run benchmarks N times, defaults to once.
|
|
|
|
// ignore_for_file: library_prefixes
|
|
|
|
import '../../BigIntParsePrint/dart/BigIntParsePrint.dart'
|
|
deferred as lib_BigIntParsePrint;
|
|
import '../../Iterators/dart/Iterators.dart' deferred as lib_Iterators;
|
|
import '../../ListCopy/dart/ListCopy.dart' deferred as lib_ListCopy;
|
|
import '../../MD5/dart/md5.dart' deferred as lib_MD5;
|
|
import '../../MapCopy/dart/MapCopy.dart' deferred as lib_MapCopy;
|
|
import '../../RecordCollections/dart/RecordCollections.dart'
|
|
deferred as lib_RecordCollections;
|
|
import '../../RuntimeType/dart/RuntimeType.dart' deferred as lib_RuntimeType;
|
|
import '../../SHA1/dart/sha1.dart' deferred as lib_SHA1;
|
|
import '../../SHA256/dart/sha256.dart' deferred as lib_SHA256;
|
|
import '../../SkeletalAnimation/dart/SkeletalAnimation.dart'
|
|
deferred as lib_SkeletalAnimation;
|
|
import '../../SkeletalAnimationSIMD/dart/SkeletalAnimationSIMD.dart'
|
|
deferred as lib_SkeletalAnimationSIMD;
|
|
import '../../SwitchFSM/dart/SwitchFSM.dart' deferred as lib_SwitchFSM;
|
|
import '../../TypedDataDuplicate/dart/TypedDataDuplicate.dart'
|
|
deferred as lib_TypedDataDuplicate;
|
|
import '../../UiMatrix/dart/UiMatrixHarness.dart' deferred as lib_UiMatrix;
|
|
import '../../Utf8Decode/dart/Utf8Decode.dart' deferred as lib_Utf8Decode;
|
|
import '../../Utf8Encode/dart/Utf8Encode.dart' deferred as lib_Utf8Encode;
|
|
|
|
class Lib {
|
|
final Future Function() load;
|
|
final void Function() main;
|
|
Lib(this.load, this.main);
|
|
}
|
|
|
|
final Map<String, Lib> benchmarks = {
|
|
'BigIntParsePrint': Lib(
|
|
lib_BigIntParsePrint.loadLibrary,
|
|
() => lib_BigIntParsePrint.main(),
|
|
),
|
|
'Iterators': Lib(lib_Iterators.loadLibrary, () => lib_Iterators.main([])),
|
|
'ListCopy': Lib(lib_ListCopy.loadLibrary, () => lib_ListCopy.main()),
|
|
'MapCopy': Lib(lib_MapCopy.loadLibrary, () => lib_MapCopy.main([])),
|
|
'MD5': Lib(lib_MD5.loadLibrary, () => lib_MD5.main()),
|
|
'RecordCollections': Lib(
|
|
lib_RecordCollections.loadLibrary,
|
|
() => lib_RecordCollections.main(),
|
|
),
|
|
'RuntimeType': Lib(lib_RuntimeType.loadLibrary, () => lib_RuntimeType.main()),
|
|
'SHA1': Lib(lib_SHA1.loadLibrary, () => lib_SHA1.main()),
|
|
'SHA256': Lib(lib_SHA256.loadLibrary, () => lib_SHA256.main()),
|
|
'SkeletalAnimation': Lib(
|
|
lib_SkeletalAnimation.loadLibrary,
|
|
() => lib_SkeletalAnimation.main(),
|
|
),
|
|
'SkeletalAnimationSIMD': Lib(
|
|
lib_SkeletalAnimationSIMD.loadLibrary,
|
|
() => lib_SkeletalAnimationSIMD.main(),
|
|
),
|
|
'SwitchFSM': Lib(lib_SwitchFSM.loadLibrary, () => lib_SwitchFSM.main()),
|
|
'TypedDataDuplicate': Lib(
|
|
lib_TypedDataDuplicate.loadLibrary,
|
|
() => lib_TypedDataDuplicate.main(),
|
|
),
|
|
'UiMatrix': Lib(lib_UiMatrix.loadLibrary, () => lib_UiMatrix.main()),
|
|
'Utf8Decode': Lib(lib_Utf8Decode.loadLibrary, () => lib_Utf8Decode.main([])),
|
|
'Utf8Encode': Lib(lib_Utf8Encode.loadLibrary, () => lib_Utf8Encode.main([])),
|
|
};
|
|
|
|
void main(List<String> originalArguments) async {
|
|
final List<String> args = List.of(originalArguments);
|
|
|
|
int repeats = 1;
|
|
|
|
for (final arg in args.toList()) {
|
|
final int? count = int.tryParse(arg);
|
|
if (count != null && count < 0) {
|
|
repeats = 0 - count;
|
|
args.remove(arg);
|
|
}
|
|
}
|
|
|
|
final preload = args.remove('--preload');
|
|
|
|
List<Lib> libs = [];
|
|
|
|
for (final name in args.toList()) {
|
|
final lib = benchmarks[name];
|
|
if (lib == null) {
|
|
print("Unknown benchmark: '$name'");
|
|
} else {
|
|
libs.add(lib);
|
|
args.remove(name);
|
|
}
|
|
}
|
|
if (args.isNotEmpty) return; // We will have printed an error.
|
|
|
|
if (libs.isEmpty) libs = benchmarks.values.toList();
|
|
|
|
if (preload) {
|
|
for (final lib in libs) {
|
|
await lib.load();
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < repeats; i++) {
|
|
for (final lib in libs) {
|
|
if (!preload) await lib.load();
|
|
lib.main();
|
|
}
|
|
}
|
|
}
|