// Copyright (c) 2019 Alexander Medvednikov. All rights reserved. // Use of this source code is governed by an MIT license // that can be found in the LICENSE file. import ( os time filepath ) fn main() { exe := os.executable() dir := filepath.dir(exe) vdir := filepath.dir(filepath.dir(dir)) if !os.exists('$vdir/v') && !os.is_dir('$vdir/vlib') { println('fast.html generator needs to be located in `v/tools/fast/`') } println('fast.html generator\n') // Fetch the last commit's hash println('Fetching updates...') ret := os.system('git pull --rebase') if ret != 0 { println('failed to git pull') return } mut commit_hash := exec('git rev-parse HEAD') commit_hash = commit_hash[..7] if !os.exists('table.html') { os.create('table.html') or { panic(err) } } mut table := os.read_file('table.html') or { panic(err) } // Do nothing if it's already been processed. if table.contains(commit_hash) { println('Commit $commit_hash has already been processed') return } // Build an optimized V println('Building vprod...') exec('v -o $vdir/vprod -prod $vdir/v.v') println('Measuring...') diff1 := measure('$vdir/vprod -cc clang -o v.c $vdir/v.v') diff2 := measure('$vdir/vprod -cc clang -o v2 $vdir/v.v') diff3 := measure('$vdir/vprod -o v2 -fast $vdir/v.v') diff4 := measure('$vdir/vprod -cc clang $vdir/examples/hello_world.v') //println('Building V took ${diff}ms') commit_date := exec('git log -n1 --pretty="format:%at"') message := exec('git log -n1 --pretty="format:%s"') date := time.unix(commit_date.int()) mut out := os.create('table.html') or { panic(err) } // Place the new row on top table = '