aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-05-09 16:03:07 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-09 22:00:39 +0000
commit62669ad29ca4e74ca130190be59bb8ac82d6fbda (patch)
treea7efdf237032e09f8924415a6e50bf9c05869da2 /tools
parent25294d76b1c5ca34ba6cc7033ee42af6484b046b (diff)
ok, add timer via
Change-Id: I3d25a2aa9ae6dacb52779142cea062c7d9df40f5 Reviewed-on: https://skia-review.googlesource.com/16238 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/ok_vias.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/ok_vias.cpp b/tools/ok_vias.cpp
index 254e6b1a4f..90306d016e 100644
--- a/tools/ok_vias.cpp
+++ b/tools/ok_vias.cpp
@@ -9,7 +9,9 @@
#include "SkOSFile.h"
#include "SkPictureRecorder.h"
#include "SkPngEncoder.h"
+#include "Timer.h"
#include "ok.h"
+#include <chrono>
#include <regex>
static std::unique_ptr<Src> proxy(Src* original, std::function<Status(SkCanvas*)> fn) {
@@ -129,3 +131,31 @@ struct Filter : Dst {
struct Register filter{"filter",
"run only srcs matching match=.* exactly and search=.* somewhere",
Filter::Create};
+
+struct Time : Dst {
+ std::unique_ptr<Dst> target;
+
+ static std::unique_ptr<Dst> Create(Options options, std::unique_ptr<Dst> dst) {
+ Time via;
+ via.target = std::move(dst);
+ return move_unique(via);
+ }
+
+ Status draw(Src* src) override {
+ auto start = std::chrono::steady_clock::now();
+ Status status = target->draw(src);
+ std::chrono::duration<double, std::milli> elapsed = std::chrono::steady_clock::now()
+ - start;
+
+ auto msg = HumanizeMs(elapsed.count());
+ ok_log(msg.c_str());
+ return status;
+ }
+
+ sk_sp<SkImage> image() override {
+ return target->image();
+ }
+};
+struct Register _time{"time",
+ "print wall run time",
+ Time::Create};