incubator-allura-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From brond...@apache.org
Subject [2/5] git commit: [#6686] Added script to benchmark new git last_commit_ids implementation
Date Mon, 21 Oct 2013 21:22:14 GMT
[#6686] Added script to benchmark new git last_commit_ids implementation

Signed-off-by: Cory Johns <cjohns@slashdotmedia.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/2139f13d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/2139f13d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/2139f13d

Branch: refs/heads/master
Commit: 2139f13d1aae207c5ca6c5fb598654fc9261f9f1
Parents: a482b45
Author: Cory Johns <cjohns@slashdotmedia.com>
Authored: Tue Oct 1 16:19:25 2013 +0000
Committer: Cory Johns <cjohns@slashdotmedia.com>
Committed: Mon Oct 21 20:31:09 2013 +0000

----------------------------------------------------------------------
 scripts/perf/test_git_lcd.py | 52 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2139f13d/scripts/perf/test_git_lcd.py
----------------------------------------------------------------------
diff --git a/scripts/perf/test_git_lcd.py b/scripts/perf/test_git_lcd.py
new file mode 100644
index 0000000..aca0288
--- /dev/null
+++ b/scripts/perf/test_git_lcd.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+#       Licensed to the Apache Software Foundation (ASF) under one
+#       or more contributor license agreements.  See the NOTICE file
+#       distributed with this work for additional information
+#       regarding copyright ownership.  The ASF licenses this file
+#       to you under the Apache License, Version 2.0 (the
+#       "License"); you may not use this file except in compliance
+#       with the License.  You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#       Unless required by applicable law or agreed to in writing,
+#       software distributed under the License is distributed on an
+#       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#       KIND, either express or implied.  See the License for the
+#       specific language governing permissions and limitations
+#       under the License.
+
+import sys
+import os
+from glob import glob
+from time import time
+from contextlib import contextmanager
+from pprint import pprint
+
+from mock import Mock
+from forgegit.model.git_repo import GitImplementation
+
+
+@contextmanager
+def benchmark():
+    timer = {'start': time()}
+    yield timer
+    timer['end'] = time()
+    timer['result'] = timer['end'] - timer['start']
+
+
+def main(repo_dir, sub_dir='', commit=None):
+    repo_dir = repo_dir.rstrip('/')
+    git = GitImplementation(Mock(full_fs_path=repo_dir))
+    commit = Mock(_id=commit or git.head)
+    paths = glob(os.path.join(repo_dir, sub_dir, '*'))
+    paths = [path.replace(repo_dir+'/', '', 1) for path in paths]
+    print "Timing LCDs for %s at %s" % (paths, commit._id)
+    with benchmark() as timer:
+        result = git.last_commit_ids(commit, paths)
+    pprint(result)
+    print "Took %f seconds" % timer['result']
+
+if __name__ == '__main__':
+    main(*sys.argv[1:])


Mime
View raw message