diff --git a/benchmarks/basic_commands.py b/benchmarks/basic_commands.py index 2858bf0368b9369a521aad1d1471326ed05a6edb_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ==..4a17b057f4f4adeea7019e8c63815904ed36a04d_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ== 100644 --- a/benchmarks/basic_commands.py +++ b/benchmarks/basic_commands.py @@ -17,7 +17,7 @@ class TestSuite(object): - params = (REPOS) + params = [REPOS] param_names = ["repo"] def setup(self, repo_name): @@ -34,7 +34,7 @@ timings = [] # Do a first measurement - first_measure = self._single_execute(cmd)\ + first_measure = self._single_execute(cmd) N = int(30 / first_measure) @@ -93,7 +93,7 @@ class TimeTestSuite(object): - params = (REPOS) + params = [REPOS] param_names = ["repo"] def __init__(self): @@ -137,6 +137,9 @@ time = self._execute("status", "--change", "tip") return time + def bench_command_status(self, *args, **kwargs): + return "status --change tip" + def time_emptydiff(self, *args, **kwargs): time = self._execute("diff") return time @@ -146,8 +149,7 @@ return time def time_log_tip(self, *args, **kwargs): - time = self._execute("log", "-r", "tip") - return time + self._execute("log", "-r", "tip") def time_summary(self, *args, **kwargs): time = self._execute("summary") @@ -168,3 +170,46 @@ def time_id_current(self, *args, **kwargs): time = self._execute("id", "-r", ". ") return time + + +class LogTimeTestSuite(object): + + params = [REPOS, [10, 100, 1000, 10000]] + param_names = ["repo", "changesets"] + + def __init__(self): + super(LogTimeTestSuite, self).__init__() + + self.timer = timeit.default_timer + self.goal_time = 10 + + def setup(self, repo_name, n): + venv = os.path.abspath(os.path.join(os.path.dirname(sys.executable), "..")) + self.repo_name = repo_name + self.hgpath = os.path.join(venv, "bin", "hg") + self.repo_path = os.path.join(REPOS_DIR, self.repo_name) + + def _execute(self, command, *args): + cmd = self._prepare_cmd(command, *args) + + try: + return self._single_execute(cmd) + except subprocess.CalledProcessError as error: + print("ERROR OUTPUT", error.output) + raise + + def _prepare_cmd(self, command, *args): + cmd = [ + self.hgpath, + "--cwd", self.repo_path, + "--traceback", + command, + ] + list(args) + + return cmd + + def _single_execute(self, cmd): + return subprocess.check_output(cmd, stderr=subprocess.STDOUT) + + def time_log_history(self, repo, n): + self._execute("log", "-r", "tip~%d::" % n)