tools/fast: simplify logic now that it's run on each commit

pull/8615/head
Alexander Medvednikov 2021-02-07 05:11:48 +01:00
parent a81ee0e94e
commit 68b4051a6e
2 changed files with 43 additions and 71 deletions

View File

@ -19,55 +19,24 @@ fn main() {
println('failed to update V')
return
}
mut commit_hash := exec('git rev-parse HEAD')
commit_hash = commit_hash[..8]
if os.exists('last_commit.txt') {
last_commit := os.read_file('last_commit.txt') ?
if last_commit.trim_space() == commit_hash.trim_space() {
println('No new commits to benchmark. Commit $commit_hash has already been processed.')
return
}
commit_hash = last_commit.trim_space()
}
commit := exec('git rev-parse HEAD')[..8]
// commit_hash = commit_hash[..8]
if !os.exists('table.html') {
os.create('table.html') ?
}
mut table := os.read_file('table.html') ?
/*
// Do nothing if it's already been processed.
if table.contains(commit_hash) {
println('Commit $commit_hash has already been processed')
return
}
*/
last_commits := exec('git log --pretty=format:"%h" -n 50').split('\n')
// Fetch all unprocessed commits (commits after the last processed commit)
mut commits := []string{}
println('!last_commit="$commit_hash"')
if last_commits.len == 0 || last_commits[0] == commit_hash {
if table.contains('>$commit<') {
println('nothing to benchmark')
exit(1)
return
}
for i, c in last_commits {
if c == commit_hash {
commits = last_commits[..i].reverse()
break
}
}
println(last_commits)
if commits.len == 0 {
// Just benchmark the last commit if the tool hasn't been run for too long.
// commits = [commit_hash]
}
println('Commits to benchmark:')
println(commits)
for i, commit in commits {
// for i, commit in commits {
message := exec('git log --pretty=format:"%s" -n1 $commit')
println('\n${i + 1}/$commits.len Benchmarking commit $commit "$message"')
// println('\n${i + 1}/$commits.len Benchmarking commit $commit "$message"')
println('\nBenchmarking commit $commit "$message"')
// Build an optimized V
println('Checking out ${commit}...')
exec('git checkout $commit')
// println('Checking out ${commit}...')
// exec('git checkout $commit')
println(' Building vprod...')
exec('v -o $vdir/vprod -prod $vdir/cmd/v')
diff1 := measure('$vdir/vprod -cc clang -o v.c -show-timings $vdir/cmd/v', 'v.c')
@ -107,9 +76,9 @@ fn main() {
res.writeln(table) ?
res.writeln(footer) ?
res.close()
}
exec('git checkout master')
os.write_file('last_commit.txt', commits[commits.len - 1]) ?
//}
// exec('git checkout master')
// os.write_file('last_commit.txt', commits[commits.len - 1]) ?
}
fn exec(s string) string {

View File

@ -8,6 +8,9 @@
*, body {
font-family: Menlo, Monospace, 'Courier New';
}
table {
width: 2000px;
}
table, td {
border-collapse: collapse;
border: 1px solid #dfdfdf;