# Benchmark Measured on 2026-05-24 with `n=50` on the Android 15 emulator `Google sdk_gphone64_arm64` (`1440x3120`, SDK 35), host macOS/aarch64. Numbers are p50 with p95 in parentheses. `hs` uses one warm daemon socket; `adb` starts a fresh adb CLI process per sample. Reproduce the Handsets side with `hs bench -n 50` or machine-readable `hs bench -n 50 --json`. Reproduce raw ADB baselines with `scripts/bench-adb.sh -n 50`; the script keeps the exact ADB commands inspectable. The default `hs bench` suite follows the hot path: 768px JPEG screenshots for agents, with WebP as a lossy export comparison. PNG is intentionally left out of the headline `hs` suite because Android's PNG encoder is a debug/export path, not an interaction loop path. ## Headline Comparisons | Command | hs | adb | Speedup | |---|---:|---:|---:| | `screenshot size=768` JPEG vs `adb exec-out screencap -p` PNG | **8.02 ms** (10.76) | 2105.61 ms (2308.38) | **263×** | | `screenshot max=1` JPEG vs `adb exec-out screencap -p` PNG | **52.60 ms** (71.23) | 2105.61 ms (2308.38) | **40×** | | `wm_info` vs `adb shell wm size` | **1.34 ms** (2.29) | 45.81 ms (67.83) | **34×** | | `state top` vs `adb shell dumpsys window` | **2.54 ms** (5.09) | 71.28 ms (107.80) | **28×** | | `ping` vs `adb shell true` | **1.61 ms** (2.64) | 27.65 ms (36.33) | **17×** | ## Handsets Warm-Socket Suite | Command | p50 | p95 | bytes | |---|---:|---:|---:| | `ping` | 1.61 ms | 2.64 ms | 4 | | `info` | 1.64 ms | 2.80 ms | 9 | | `wm_info` | 1.34 ms | 2.29 ms | 81 | | `state top` | 2.54 ms | 5.09 ms | 60 | | `wait_for_idle idle_ms=0 timeout_ms=1000` | 1.49 ms | 3.40 ms | 15 | | `dump_active` | 4.58 ms | 6.92 ms | 5960 | | `dump` | 6.62 ms | 9.58 ms | 10317 | | `screenshot size=480` JPEG q80 | 3.42 ms | 6.26 ms | 12069 | | `screenshot size=768` JPEG q80 | 8.02 ms | 10.76 ms | 22414 | | `screenshot size=1080` JPEG q80 | 12.33 ms | 17.34 ms | 34611 | | `screenshot size=1080 q=95` JPEG | 11.89 ms | 19.83 ms | 83811 | | `screenshot max=1` JPEG q80 | 52.60 ms | 71.23 ms | 142014 | | `screenshot size=768 q=95` JPEG | 6.35 ms | 10.34 ms | 49390 | | `screenshot size=768 fmt=webp` q80 | 62.26 ms | 78.54 ms | 12090 | ## Raw ADB Baseline | Command | p50 | p95 | bytes | |---|---:|---:|---:| | `adb shell true` | 27.65 ms | 36.33 ms | 0 | | `adb shell getprop ro.build.version.sdk` | 31.38 ms | 41.57 ms | 3 | | `adb shell wm size` | 45.81 ms | 67.83 ms | 25 | | `adb shell settings get system screen_brightness` | 45.33 ms | 57.92 ms | 4 | | `adb shell dumpsys window` | 71.28 ms | 107.80 ms | 87667 | | `adb exec-out screencap -p` | 2105.61 ms | 2308.38 ms | 2024218 |