Trace-based benchmarking via a mojo app.
This patch adds `benchmark.mojo` app for trace-based benchmarking and a
runner script.
$ mojo/devtools/common/mojo_benchmark mojo/tools/data/benchmarks
[Trace me]
measurement: time_until/trace_me/DoWork 4488.810000
measurement: avg_duration/trace_me/DoWork 300.449714
[Spinning cube]
measurement: time_until/gpu/GpuScheduler:PutChanged 4341.874000
Fixes #371.
R=etiennej@chromium.org, jamesr@chromium.org
Review URL: https://codereview.chromium.org/1305193002 .
diff --git a/apps/benchmark/BUILD.gn b/apps/benchmark/BUILD.gn
new file mode 100644
index 0000000..5bb84bb
--- /dev/null
+++ b/apps/benchmark/BUILD.gn
@@ -0,0 +1,59 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//mojo/public/mojo_application.gni")
+
+source_set("lib") {
+ sources = [
+ "event.cc",
+ "event.h",
+ "measurements.cc",
+ "measurements.h",
+ "run_args.cc",
+ "run_args.h",
+ "trace_collector_client.cc",
+ "trace_collector_client.h",
+ ]
+
+ deps = [
+ "//base",
+ "//mojo/data_pipe_utils",
+ ]
+
+ public_deps = [
+ "//mojo/services/tracing/public/interfaces",
+ ]
+}
+
+mojo_native_application("benchmark") {
+ sources = [
+ "benchmark_app.cc",
+ ]
+
+ deps = [
+ ":lib",
+ "//base",
+ "//mojo/application:application",
+ "//mojo/public/cpp/application",
+ ]
+}
+
+mojo_native_application("apptests") {
+ output_name = "benchmark_apptests"
+
+ testonly = true
+
+ sources = [
+ "event_unittest.cc",
+ "measurements_unittest.cc",
+ ]
+
+ deps = [
+ ":lib",
+ "//mojo/application",
+ "//mojo/application:test_support",
+ "//mojo/public/cpp/bindings:callback",
+ "//testing/gtest",
+ ]
+}