Gaze Guard Power Draw: How Much Battery Does Running MediaPipe in a Chrome Extension Cost?

How much battery does running MediaPipe face detection in a Chrome extension cost? Measured SoC-level numbers comparing monitoring on vs. off, with a GPU/ANE breakdown.

分享
Gaze Guard Power Draw: How Much Battery Does Running MediaPipe in a Chrome Extension Cost?
Photo by Panos Sakalakis on Unsplash

Background

Gaze Guard is a Chrome extension that uses your webcam to detect when someone is peeking at your screen from a distance. All processing happens locally.

The core: MediaPipe FaceLandmarker (WASM) runs continuous face detection at ~10 FPS inside an offscreen document, estimating distance and head orientation to decide whether to alert you.

I'd always wondered how much that background inference actually costs. The most direct question: monitoring on vs. off — what's the difference?

Bottom line: turning monitoring on costs about 277 mW more (SoC level), mostly from the GPU and ANE. That's roughly 12–17 minutes of MacBook Pro M4 battery life (~2.8%). Lowering the detection FPS barely helps.

How was it measured?

sudo powermetrics --samplers cpu_power,battery -i 5000 -n 1

One snapshot was taken in each of two states:

  • Idle: extension installed but monitoring off (no camera stream, no inference)
  • Monitoring: normal use, detecting continuously at 10 FPS

Test machine: MacBook Pro M4 Pro / macOS 15

⚠️ Only one snapshot per condition — single measurements are noisy, so treat this as a trend, not a precise figure.

On vs. off — how big is the gap? (SoC level)

State CPU GPU ANE SoC Total
Idle (monitoring off) 110 mW 78 mW 0 mW 188 mW
Monitoring 165 mW 259 mW 41 mW 465 mW
Delta +55 mW +181 mW +41 mW +277 mW

Turning monitoring on raises total SoC power from 188 mW to 465 mW — about 277 mW extra.


Which component draws the most?

1. The GPU is the main cost

Once monitoring starts, GPU power jumps from 78 mW to 259 mW (+232%) — the largest increase of the three blocks. Two sources:

  • Chrome's webcam pipeline: the video stream is handled by Chrome and runs constantly — the bulk of the GPU increase
  • MediaPipe detectForVideo() inference: the per-frame GPU cost of face detection

2. The ANE holds a steady +41 mW

Whenever monitoring is active, the Apple Neural Engine sits at 41 mW — a constant overhead after MediaPipe's WASM initialization, versus 0 when idle.

3. The CPU barely moves

CPU only rises from 110 mW to 165 mW (+55 mW). Inference and image processing land mostly on the GPU and ANE; the CPU isn't the bottleneck.


How much does it hit battery life?

Assuming a light workload draws 10 W total system power (screen, Wi-Fi, SSD, etc.):

Model Battery Idle Monitoring Loss
MBP M4 Pro 14" 72.0 Wh 7 h 12 min 7 h 00 min -12 min
MBP M4 Pro 16" 99.6 Wh 9 h 58 min 9 h 41 min -17 min

Monitoring costs roughly 2.8% of battery life — about 12–17 minutes.


Conclusion

Figure
Extra power with monitoring on +277 mW SoC (vs. idle)
Main sources GPU +181 mW, ANE +41 mW, CPU +55 mW
Battery-life loss ~12–17 min on a MBP M4 Pro (2.8%)

For a privacy tool that requires continuous local inference, 277 mW of overhead is acceptable. To save power, the effective approach isn't lowering the detection rate — it's pausing inference when no external face has been seen for a while. But that's a feature for another day.


FAQ

Does Gaze Guard drain the battery? Monitoring costs about 277 mW more than off. Under a light workload that's roughly 12–17 minutes of laptop battery (~2.8%) — an acceptable trade-off.

Does lowering the detection FPS save power? Barely. The bulk of the draw is Chrome's webcam pipeline and the GPU, and that cost is independent of FPS — so dropping the rate saves very little.

Which component uses the most power? The GPU sees the biggest jump (+181 mW), followed by the Apple Neural Engine (+41 mW); the CPU rises only 55 mW.


中文版:Gaze Guard 耗電量實測 Test date: 2026-06-17 / Extension version: v1.0.3 GitHub: steepinglogic/gaze-guard