You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2013/10/01 18:19:40 UTC

git commit: [#6686] Added script to benchmark new git last_commit_ids implementation

Updated Branches:
  refs/heads/cj/6686 363e3a2f8 -> 0c23057a4


[#6686] Added script to benchmark new git last_commit_ids implementation

Signed-off-by: Cory Johns <cj...@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/0c23057a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/0c23057a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/0c23057a

Branch: refs/heads/cj/6686
Commit: 0c23057a41991a924d737a27f1644e720084efb4
Parents: 363e3a2
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Tue Oct 1 16:19:25 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Tue Oct 1 16:19:25 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/0c23057a/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:])