tools/fast: simplify logic now that it's run on each commit
parent
a81ee0e94e
commit
68b4051a6e
|
@ -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 {
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
*, body {
|
||||
font-family: Menlo, Monospace, 'Courier New';
|
||||
}
|
||||
table {
|
||||
width: 2000px;
|
||||
}
|
||||
table, td {
|
||||
border-collapse: collapse;
|
||||
border: 1px solid #dfdfdf;
|
||||
|
|
Loading…
Reference in New Issue