v2 / vlib / x / templating / dtm2 / benchmarks / run_dtm2_benchmark.sh
57 lines · 50 sloc · 1.92 KB · 3eff1b83cf719199d0ff6f63524da63c9294ffd5
Raw
1#!/usr/bin/env bash
2set -euo pipefail
3
4script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5repo_root="$(cd "${script_dir}/../../../../.." && pwd)"
6cd "${repo_root}"
7
8timestamp="$(date +%Y-%m-%d_%H%M%S)"
9results_dir="${DTM2_BENCH_RESULTS_DIR:-vlib/x/templating/dtm2/benchmarks/results/${timestamp}}"
10bench_source="vlib/x/templating/dtm2/benchmarks/dtm2_benchmark.v"
11bench_bin="/tmp/dtm2_benchmark_${timestamp}_$$"
12bench_mode="${DTM2_BENCH_MODE:-prod}"
13
14mkdir -p "${results_dir}"
15trap 'rm -f "${bench_bin}"' EXIT
16
17case "${bench_mode}" in
18 dev)
19 build_cmd=(./v -o "${bench_bin}" "${bench_source}")
20 ;;
21 prod)
22 build_cmd=(./v -prod -o "${bench_bin}" "${bench_source}")
23 ;;
24 prod_o2)
25 build_cmd=(./v -prod -no-prod-options -cflags -O2 -o "${bench_bin}" "${bench_source}")
26 ;;
27 *)
28 echo "unsupported DTM2_BENCH_MODE=${bench_mode}; use dev, prod, or prod_o2" >&2
29 exit 2
30 ;;
31esac
32
33{
34 echo "date: $(date -Iseconds)"
35 echo "v_version: $(./v --version)"
36 echo "kernel: $(uname -srmo)"
37 echo "cpu_model: $(awk -F': ' '/model name/{print $2; exit}' /proc/cpuinfo)"
38 echo "logical_cpu_count: $(nproc)"
39 echo "memory_total: $(awk '/MemTotal/{print $2 " " $3}' /proc/meminfo)"
40 echo "benchmark_mode: ${bench_mode}"
41 echo "benchmark_source: ${bench_source}"
42 echo "DTM2_BENCH_CASE: ${DTM2_BENCH_CASE:-all}"
43 echo "DTM2_BENCH_ITERATIONS: ${DTM2_BENCH_ITERATIONS:-50000}"
44 echo "DTM2_BENCH_COLD_ITERATIONS: ${DTM2_BENCH_COLD_ITERATIONS:-500}"
45 echo "DTM2_BENCH_PLACEHOLDERS: ${DTM2_BENCH_PLACEHOLDERS:-50}"
46 echo "DTM2_BENCH_COMPRESS_HTML: ${DTM2_BENCH_COMPRESS_HTML:-true}"
47 echo "DTM2_BENCH_RELOAD_MODIFIED_TEMPLATES: ${DTM2_BENCH_RELOAD_MODIFIED_TEMPLATES:-false}"
48 echo "DTM2_BENCH_VALIDATE_EACH_ITERATION: ${DTM2_BENCH_VALIDATE_EACH_ITERATION:-false}"
49} > "${results_dir}/environment.txt"
50
51"${build_cmd[@]}" > "${results_dir}/build.log" 2>&1
52
53{
54 cat "${results_dir}/environment.txt"
55 echo
56 /usr/bin/time -v "${bench_bin}"
57} 2>&1 | tee "${results_dir}/benchmark.log"
58