def METHOD_NAME(cls, conf, branch=None, base=None,
        factor=None, split=False, only_changed=True, sort='ratio', use_stats=True,
        show_stderr=False, bench=None,
        attribute=None, machine=None, env_spec=None,
        record_samples=False, append_samples=False,
        quick=False, interleave_rounds=None, launch_method=None, _machine_file=None):
    repo = get_repo(conf)
    repo.pull()
    if branch is None:
        branch = conf.branches[0]
    try:
        head = repo.get_hash_from_name(branch)
        if base is None:
            parent = repo.get_hash_from_parent(head)
        else:
            parent = repo.get_hash_from_name(base)
    except NoSuchNameError as exc:
        raise util.UserError(f"Unknown commit {exc}")
    commit_hashes = [head, parent]
    run_objs = {}
    result = Run.METHOD_NAME(
        conf, range_spec=commit_hashes, bench=bench, attribute=attribute,
        show_stderr=show_stderr, machine=machine, env_spec=env_spec,
        record_samples=record_samples, append_samples=append_samples, quick=quick,
        interleave_rounds=interleave_rounds,
        launch_method=launch_method, _returns=run_objs, _machine_file=_machine_file)
    if result:
        return result
    log.flush()
    def results_iter(commit_hash):
        for env in run_objs['environments']:
            machine_name = run_objs['machine_params']['machine']
            filename = results.get_filename(
                machine_name, commit_hash, env.name)
            filename = os.path.join(conf.results_dir, filename)
            try:
                result = results.Results.load(filename, machine_name)
            except util.UserError as err:
                log.warning(str(err))
                continue
            for name, benchmark in run_objs['benchmarks'].items():
                params = benchmark['params']
                version = benchmark['version']
                value = result.get_result_value(name, params)
                stats = result.get_result_stats(name, params)
                samples = result.get_result_samples(name, params)
                yield name, params, value, stats, samples, version, machine_name, env.name
    commit_names = {parent: repo.get_name_from_hash(parent),
                    head: repo.get_name_from_hash(head)}
    status = Compare.print_table(conf, parent, head,
                                 resultset_1=results_iter(parent),
                                 resultset_2=results_iter(head),
                                 factor=factor, split=split,
                                 use_stats=use_stats,
                                 only_changed=only_changed, sort=sort,
                                 commit_names=commit_names)
    worsened, improved = status
    color_print("")
    if worsened:
        color_print("SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.", 'red')
        color_print("PERFORMANCE DECREASED.", 'red')
    elif improved:
        color_print("SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.", 'green')
        color_print("PERFORMANCE INCREASED.", 'green')
    else:
        color_print("BENCHMARKS NOT SIGNIFICANTLY CHANGED.", 'green')
    return worsened