aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar halcanary <halcanary@google.com>2014-08-11 11:33:51 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-08-11 11:33:51 -0700
commit0d154eeaebc640b7bd83e0b212fac22587610a4b (patch)
tree51ad02bda3d0a787b7b4df0f57bc9b91c710a7f3 /tools
parentd3ddea284ec6611a93a6b75e64de39d0bc7e083c (diff)
Process Statistics header, add max RSS to render_pdfs
Diffstat (limited to 'tools')
-rw-r--r--tools/ProcStats.cpp31
-rw-r--r--tools/ProcStats.h25
-rw-r--r--tools/render_pdfs_main.cpp10
3 files changed, 65 insertions, 1 deletions
diff --git a/tools/ProcStats.cpp b/tools/ProcStats.cpp
new file mode 100644
index 0000000000..94660394f8
--- /dev/null
+++ b/tools/ProcStats.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "ProcStats.h"
+
+#if defined(SK_BUILD_FOR_UNIX) || \
+ defined(SK_BUILD_FOR_MAC) || \
+ defined(SK_BUILD_FOR_ANDROID)
+
+ #include <sys/resource.h>
+ int sk_tools::getMaxResidentSetSizeKB() {
+ struct rusage ru;
+ getrusage(RUSAGE_SELF, &ru);
+ #if defined(SK_BUILD_FOR_MAC)
+ return static_cast<int>(ru.ru_maxrss / 1024); // Darwin reports bytes.
+ #else
+ return static_cast<int>(ru.ru_maxrss); // Linux reports kilobytes.
+ #endif
+ }
+
+#else
+
+ int sk_tools::getMaxResidentSetSizeKB() {
+ return -1;
+ }
+
+#endif
diff --git a/tools/ProcStats.h b/tools/ProcStats.h
new file mode 100644
index 0000000000..42849f1401
--- /dev/null
+++ b/tools/ProcStats.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef ProcStats_DEFINED
+#define ProcStats_DEFINED
+
+/**
+ * ProcStats - Process Statistics Functions
+ */
+
+namespace sk_tools {
+
+/**
+ * If not implemented for this OS, returns -1. Otherwise, return
+ * the maximum resident set size, as reported by getrusage().
+ */
+int getMaxResidentSetSizeKB();
+
+} // namespace sk_tools
+
+#endif // ProcStats_DEFINED
diff --git a/tools/render_pdfs_main.cpp b/tools/render_pdfs_main.cpp
index be294399ec..34e5e58f53 100644
--- a/tools/render_pdfs_main.cpp
+++ b/tools/render_pdfs_main.cpp
@@ -18,6 +18,7 @@
#include "SkTArray.h"
#include "SkTSort.h"
#include "PdfRenderer.h"
+#include "ProcStats.h"
#include "picture_utils.h"
__SK_FORCE_IMAGE_DECODER_LINKING;
@@ -219,7 +220,9 @@ static int process_input(
}
}
}
- SkTQSort<SkString>(files.begin(), files.end() - 1);
+ if (files.count() > 0) {
+ SkTQSort<SkString>(files.begin(), files.end() - 1);
+ }
int failures = 0;
for (int i = 0; i < files.count(); i ++) {
if (!render_pdf(files[i], outputDir, renderer)) {
@@ -246,6 +249,11 @@ int tool_main_core(int argc, char** argv) {
int failures = process_input(FLAGS_inputPaths, outputDir, *renderer);
+ int max_rss_kb = sk_tools::getMaxResidentSetSizeKB();
+ if (max_rss_kb >= 0) {
+ SkDebugf("%4dM peak ResidentSetSize\n", max_rss_kb / 1024);
+ }
+
if (failures != 0) {
SkDebugf("Failed to render %i PDFs.\n", failures);
return 1;