From 7e125a2883f16a6e7b47d10370db36855da47506 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Thu, 16 Jul 2015 13:38:31 +0300 Subject: Share one git clone for all benchmark runs --- obbench | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'obbench') diff --git a/obbench b/obbench index 34339a7..20761a7 100755 --- a/obbench +++ b/obbench @@ -31,26 +31,29 @@ class ObnamBenchmarker(cliapp.Application): if not args: raise cliapp.AppException('Need benchmark spec filename') spec = self.read_benchmark_spec(args[0]) + tempdir = tempfile.mkdtemp() for treeish in args[1:]: - self.run_all_benchmarks(spec, treeish) + self.run_all_benchmarks(spec, treeish, tempdir) self.generate_html(spec) + shutil.rmtree(tempdir) def read_benchmark_spec(self, filename): with open(filename) as f: return yaml.safe_load(f) - def run_all_benchmarks(self, spec, treeish): - checkout = self.get_treeish(spec, treeish) + def run_all_benchmarks(self, spec, treeish, tempdir): + checkout = self.get_treeish(spec, treeish, tempdir) for benchmark in spec.get('benchmarks', []): result = self.run_one_benchmark(benchmark, checkout) self.save_result(spec, result) - shutil.rmtree(checkout) - def get_treeish(self, spec, treeish): - tempdir = tempfile.mkdtemp() - cliapp.runcmd(['git', 'clone', spec['git'], tempdir]) - cliapp.runcmd(['git', 'checkout', treeish], cwd=tempdir) - return tempdir + def get_treeish(self, spec, treeish, tempdir): + checkout = os.path.join(tempdir, 'git') + if not os.path.exists(checkout): + cliapp.runcmd(['git', 'clone', spec['git'], checkout]) + cliapp.runcmd(['git', 'checkout', treeish], cwd=checkout) + cliapp.runcmd(['git', 'clean', '-fdxq'], cwd=checkout) + return checkout def run_one_benchmark(self, benchmark, checkout): result = BenchmarkResult() -- cgit v1.2.1