carlos / todomvc-bakeoff Public

Clone
git clone https://amadan.net/carlos/todomvc-bakeoff

Plain git — no account needed to clone.

Download

Download this file

1#!/usr/bin/env bash
2# Collects wake-from-sleep samples: every 2 minutes, any app whose instance
3# the platform's own log says is asleep (latest event "stopping"/"exited")
4# gets one first request timed. After a sample an app is left alone for at
5# least 16 minutes (the idle window is 15), because the log is flushed
6# periodically and can lag. Runs until every app has <samples> samples.
7# Nothing else may touch the apps meanwhile.
8# scripts/measure-wake.sh [samples] [slug...]
9set -uo pipefail
10cd "$(dirname "$0")/.."
11want=${1:-3}; shift || true
12slugs=("$@")
13[ ${#slugs[@]} -gt 0 ] || slugs=(go go-rastrillo rust zig ocaml haskell swift nim spinel)
14declare -A last
15have() { python3 -c "import json,sys; print(len(json.load(open('results/$1.json')).get('Wake') or []))"; }
16while :; do
17 left=0
18 now=$(date +%s)
19 for s in "${slugs[@]}"; do
20 n=$(have "$s")
21 [ "$n" -ge "$want" ] && continue
22 left=1
23 [ $(( now - ${last[$s]:-0} )) -lt 960 ] && continue
24 if bakeoff wake --slug "$s"; then
25 last[$s]=$(date +%s)
26 echo "$(date +%H:%M) $s sample $((n+1))"
27 fi
28 done
29 [ $left = 0 ] && break
30 sleep 120
31done
32echo "wake: done"
33