forked from mirrors/jj
cli: make benchmark ids include parameters
It makes no sense to compare a run of `jj walkrevs v1.0.0 v2.0.0` with a run of `jj walkrevs v2.0.0 v1.0.0`, for example.
This commit is contained in:
parent
64fcf90c68
commit
98f4e24892
2 changed files with 32 additions and 16 deletions
|
@ -268,6 +268,10 @@ impl HexPrefix {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn hex(&self) -> &str {
|
||||||
|
self.0.as_str()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn bytes_prefixes(&self) -> (CommitId, CommitId) {
|
pub fn bytes_prefixes(&self) -> (CommitId, CommitId) {
|
||||||
if self.0.len() % 2 == 0 {
|
if self.0.len() % 2 == 0 {
|
||||||
let bytes = hex::decode(&self.0).unwrap();
|
let bytes = hex::decode(&self.0).unwrap();
|
||||||
|
|
|
@ -1841,30 +1841,38 @@ fn cmd_bench(
|
||||||
) -> Result<(), CommandError> {
|
) -> Result<(), CommandError> {
|
||||||
if let Some(command_matches) = sub_matches.subcommand_matches("commonancestors") {
|
if let Some(command_matches) = sub_matches.subcommand_matches("commonancestors") {
|
||||||
let repo = get_repo(ui, &matches)?;
|
let repo = get_repo(ui, &matches)?;
|
||||||
let (repo, commit1) =
|
let revision1_str = command_matches.value_of("revision1").unwrap();
|
||||||
resolve_single_rev(ui, repo, command_matches.value_of("revision1").unwrap())?;
|
let (repo, commit1) = resolve_single_rev(ui, repo, revision1_str)?;
|
||||||
let (repo, commit2) =
|
let revision2_str = command_matches.value_of("revision2").unwrap();
|
||||||
resolve_single_rev(ui, repo, command_matches.value_of("revision2").unwrap())?;
|
let (repo, commit2) = resolve_single_rev(ui, repo, revision2_str)?;
|
||||||
let routine = || {
|
let routine = || {
|
||||||
repo.index()
|
repo.index()
|
||||||
.common_ancestors(&[commit1.id().clone()], &[commit2.id().clone()])
|
.common_ancestors(&[commit1.id().clone()], &[commit2.id().clone()])
|
||||||
};
|
};
|
||||||
run_bench(ui, "commonancestors", routine)?;
|
run_bench(
|
||||||
|
ui,
|
||||||
|
&format!("commonancestors-{}-{}", revision1_str, revision2_str),
|
||||||
|
routine,
|
||||||
|
)?;
|
||||||
} else if let Some(command_matches) = sub_matches.subcommand_matches("isancestor") {
|
} else if let Some(command_matches) = sub_matches.subcommand_matches("isancestor") {
|
||||||
let repo = get_repo(ui, &matches)?;
|
let repo = get_repo(ui, &matches)?;
|
||||||
let (repo, ancestor_commit) =
|
let ancestor_str = command_matches.value_of("ancestor").unwrap();
|
||||||
resolve_single_rev(ui, repo, command_matches.value_of("ancestor").unwrap())?;
|
let (repo, ancestor_commit) = resolve_single_rev(ui, repo, ancestor_str)?;
|
||||||
let (repo, descendant_commit) =
|
let descendants_str = command_matches.value_of("descendant").unwrap();
|
||||||
resolve_single_rev(ui, repo, command_matches.value_of("descendant").unwrap())?;
|
let (repo, descendant_commit) = resolve_single_rev(ui, repo, descendants_str)?;
|
||||||
let index = repo.index();
|
let index = repo.index();
|
||||||
let routine = || index.is_ancestor(ancestor_commit.id(), descendant_commit.id());
|
let routine = || index.is_ancestor(ancestor_commit.id(), descendant_commit.id());
|
||||||
run_bench(ui, "isancestor", routine)?;
|
run_bench(
|
||||||
|
ui,
|
||||||
|
&format!("isancestor-{}-{}", ancestor_str, descendants_str),
|
||||||
|
routine,
|
||||||
|
)?;
|
||||||
} else if let Some(command_matches) = sub_matches.subcommand_matches("walkrevs") {
|
} else if let Some(command_matches) = sub_matches.subcommand_matches("walkrevs") {
|
||||||
let repo = get_repo(ui, &matches)?;
|
let repo = get_repo(ui, &matches)?;
|
||||||
let (repo, unwanted_commit) =
|
let unwanted_str = command_matches.value_of("unwanted").unwrap();
|
||||||
resolve_single_rev(ui, repo, command_matches.value_of("unwanted").unwrap())?;
|
let (repo, unwanted_commit) = resolve_single_rev(ui, repo, unwanted_str)?;
|
||||||
let (repo, wanted_commit) =
|
let wanted_str = command_matches.value_of("wanted");
|
||||||
resolve_single_rev(ui, repo, command_matches.value_of("wanted").unwrap())?;
|
let (repo, wanted_commit) = resolve_single_rev(ui, repo, wanted_str.unwrap())?;
|
||||||
let index = repo.index();
|
let index = repo.index();
|
||||||
let routine = || {
|
let routine = || {
|
||||||
index
|
index
|
||||||
|
@ -1874,14 +1882,18 @@ fn cmd_bench(
|
||||||
)
|
)
|
||||||
.count()
|
.count()
|
||||||
};
|
};
|
||||||
run_bench(ui, "walkrevs", routine)?;
|
run_bench(
|
||||||
|
ui,
|
||||||
|
&format!("walkrevs-{}-{}", unwanted_str, wanted_str.unwrap()),
|
||||||
|
routine,
|
||||||
|
)?;
|
||||||
} else if let Some(command_matches) = sub_matches.subcommand_matches("resolveprefix") {
|
} else if let Some(command_matches) = sub_matches.subcommand_matches("resolveprefix") {
|
||||||
let repo = get_repo(ui, &matches)?;
|
let repo = get_repo(ui, &matches)?;
|
||||||
let prefix =
|
let prefix =
|
||||||
HexPrefix::new(command_matches.value_of("prefix").unwrap().to_string()).unwrap();
|
HexPrefix::new(command_matches.value_of("prefix").unwrap().to_string()).unwrap();
|
||||||
let index = repo.index();
|
let index = repo.index();
|
||||||
let routine = || index.resolve_prefix(&prefix);
|
let routine = || index.resolve_prefix(&prefix);
|
||||||
run_bench(ui, "resolveprefix", routine)?;
|
run_bench(ui, &format!("resolveprefix-{}", prefix.hex()), routine)?;
|
||||||
} else {
|
} else {
|
||||||
panic!("unhandled command: {:#?}", matches);
|
panic!("unhandled command: {:#?}", matches);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue