summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2012-06-15 19:40:05 (GMT)
committerEvan Martin <martine@danga.com>2012-06-15 19:40:05 (GMT)
commit8f686fae940e9d2dfb86cb8cbb5ee11176ae03de (patch)
tree50dc96155782f6952e5b61473913c3832335878b
parent18ea1ffd900dd81116728c8638d687ec5ca02cc0 (diff)
parent993566a79c4f3ab19470909dbfdc5cbdb0445ab9 (diff)
downloadNinja-8f686fae940e9d2dfb86cb8cbb5ee11176ae03de.zip
Ninja-8f686fae940e9d2dfb86cb8cbb5ee11176ae03de.tar.gz
Ninja-8f686fae940e9d2dfb86cb8cbb5ee11176ae03de.tar.bz2
Merge pull request #328 from nico/canonperf
add canon_perftest
-rwxr-xr-xconfigure.py6
-rw-r--r--src/canon_perftest.cc38
2 files changed, 43 insertions, 1 deletions
diff --git a/configure.py b/configure.py
index f733d91..7839dae 100755
--- a/configure.py
+++ b/configure.py
@@ -323,8 +323,12 @@ objs = cxx('build_log_perftest')
build_log_perftest = n.build(binary('build_log_perftest'), 'link', objs,
implicit=ninja_lib,
variables=[('libs', libs)])
+objs = cxx('canon_perftest')
+canon_perftest = n.build(binary('canon_perftest'), 'link', objs,
+ implicit=ninja_lib,
+ variables=[('libs', libs)])
n.newline()
-all_targets += parser_perftest + build_log_perftest
+all_targets += parser_perftest + build_log_perftest + canon_perftest
n.comment('Generate a graph using the "graph" tool.')
n.rule('gendot',
diff --git a/src/canon_perftest.cc b/src/canon_perftest.cc
new file mode 100644
index 0000000..aaec935
--- /dev/null
+++ b/src/canon_perftest.cc
@@ -0,0 +1,38 @@
+#include "util.h"
+
+const char kPath[] =
+ "../../third_party/WebKit/Source/WebCore/"
+ "platform/leveldb/LevelDBWriteBatch.cpp";
+
+int main() {
+ vector<int> times;
+ string err;
+
+ char buf[200];
+ int len = strlen(kPath);
+ strcpy(buf, kPath);
+
+ for (int j = 0; j < 5; ++j) {
+ const int kNumRepetitions = 2000000;
+ int64_t start = GetTimeMillis();
+ for (int i = 0; i < kNumRepetitions; ++i) {
+ CanonicalizePath(buf, &len, &err);
+ }
+ int delta = (int)(GetTimeMillis() - start);
+ times.push_back(delta);
+ }
+
+ int min = times[0];
+ int max = times[0];
+ float total = 0;
+ for (size_t i = 0; i < times.size(); ++i) {
+ total += times[i];
+ if (times[i] < min)
+ min = times[i];
+ else if (times[i] > max)
+ max = times[i];
+ }
+
+ printf("min %dms max %dms avg %.1fms\n",
+ min, max, total / times.size());
+}