Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: packages/petitparser/test/core_benchmark.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « packages/petitparser/test/all_tests.dart ('k') | packages/petitparser/test/dart_file_tests.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/petitparser/test/core_benchmark.dart
diff --git a/packages/petitparser/test/core_benchmark.dart b/packages/petitparser/test/core_benchmark.dart
new file mode 100644
index 0000000000000000000000000000000000000000..a907ec99095bee48352f336bfd26ade5bb0c40b5
--- /dev/null
+++ b/packages/petitparser/test/core_benchmark.dart
@@ -0,0 +1,81 @@
+library petitparser.test.all_benchmark;
+
+import 'package:petitparser/petitparser.dart';
+
+double benchmark(Function function,
+ [int warmup = 100, int milliseconds = 2500]) {
+ var count = 0;
+ var elapsed = 0;
+ var watch = new Stopwatch();
+ while (warmup-- > 0) {
+ function();
+ }
+ watch.start();
+ while (elapsed < milliseconds) {
+ function();
+ elapsed = watch.elapsedMilliseconds;
+ count++;
+ }
+ return elapsed / count;
+}
+
+Function charTest(List<String> inputs, Parser parser) {
+ return () {
+ for (var i = 0; i < inputs.length; i++) {
+ parser.parse(inputs[i]);
+ }
+ };
+}
+
+final characters = new List.generate(256, (value) => new String.fromCharCode(value));
+
+Function stringTest(String input, Parser parser) {
+ return () {
+ parser.parse(input);
+ };
+}
+
+final string = characters.join();
+
+final benchmarks = {
+
+ // char tests
+ "any()": charTest(characters, any()),
+ "anyOf('uncopyrightable')": charTest(characters, anyOf('uncopyrightable')),
+ "char('a')": charTest(characters, char('a')),
+ "digit()": charTest(characters, digit()),
+ "letter()": charTest(characters, letter()),
+ "lowercase()": charTest(characters, lowercase()),
+ "noneOf('uncopyrightable')": charTest(characters, noneOf('uncopyrightable')),
+ "pattern('^a')": charTest(characters, pattern('^a')),
+ "pattern('^a-cx-zA-CX-Z1-37-9')": charTest(characters, pattern('^a-cx-zA-CX-Z1-37-9')),
+ "pattern('^a-z')": charTest(characters, pattern('^a-z')),
+ "pattern('^acegik')": charTest(characters, pattern('^acegik')),
+ "pattern('a')": charTest(characters, pattern('a')),
+ "pattern('a-cx-zA-CX-Z1-37-9')": charTest(characters, pattern('a-cx-zA-CX-Z1-37-9')),
+ "pattern('a-z')": charTest(characters, pattern('a-z')),
+ "pattern('acegik')": charTest(characters, pattern('acegik')),
+ "range('a', 'z')": charTest(characters, range('a', 'z')),
+ "uppercase()": charTest(characters, uppercase()),
+ "whitespace()": charTest(characters, whitespace()),
+ "word()": charTest(characters, word()),
+
+ // combinator tests
+ "star()": stringTest(string, any().star()),
+ "starLazy()": stringTest(string, any().starLazy(failure())),
+ "starGreedy()": stringTest(string, any().starGreedy(failure())),
+ "plus()": stringTest(string, any().plus()),
+ "plusLazy()": stringTest(string, any().plusLazy(failure())),
+ "plusGreedy()": stringTest(string, any().plusGreedy(failure())),
+ "or()": stringTest(string, failure().or(any()).star()),
+ "seq()": stringTest(string, new SequenceParser(new List.filled(string.length, any()))),
+};
+
+void main() {
+ print('<?xml version="1.0"?>');
+ print('<benchmarks>');
+ for (var name in benchmarks.keys) {
+ print(' <benchmark name="$name">${benchmark(benchmarks[name])}</benchmark>');
+ }
+ print('</benchmarks>');
+}
« no previous file with comments | « packages/petitparser/test/all_tests.dart ('k') | packages/petitparser/test/dart_file_tests.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698