Rocq Timing overlays per-command compilation timing from .v.timing files
onto your Rocq/Coq source in the editor. Each command is painted by how long
it took: green for instant, yellow for the fastest commands that took
measurable time, red for slower ones, and dark red for anything that took at
least 1.0s. The elapsed seconds show on hover.
The extension is a VSCode port of rocq-timing.el
by Calvin Beck, extended with navigation commands to jump to
the slowest command in a file or across a whole development, then step through
the ranking.
Features
- Heatmap overlays: each command is colored by elapsed time, from green for instant to dark red for the slowest, so slow spots stand out.
- Hover timings: hover any command to see its exact elapsed time.
- Slowest-first navigation: jump to the slowest command in the active file or anywhere in the development, then step through the ranking.
Screenshots
Timing overlays on a Rocq source file, with the hover tooltip showing the elapsed time for the highlighted command:

Painting and clearing overlays from the Command Palette:

Jumping to the slowest command in the active file and stepping through the ranking:

Jumping to the slowest command across the whole development:

Requirements
For every <file>.v you want to inspect, a sibling <file>.v.timing must
exist in the same directory.
These are produced by Rocq/Coq's -time output. With a coq-makefile-generated
Makefile, running:
make TIMING=1
builds the development and writes the .v.timing files in the right places.
Usage
All commands are run from the Command Palette (⇧⌘P / Ctrl+Shift+P).
Overlays
- Rocq Timing: Show Overlays reads
<active-file>.v.timingand paints the active editor. - Rocq Timing: Clear Overlays removes all overlays from the active editor.
Navigation
Commands are ranked slowest-first. A jump command sets the current position, and the step commands move relative to it, so run a "Go to Slowest" command before stepping.
In the active file:
- Rocq Timing: Go to Slowest Command in File jumps to the slowest
command in
<active-file>.v.timing. - Rocq Timing: Go to Next-Slowest Command in File advances down the ranking to the next command, the next-slowest after the current one.
- Rocq Timing: Go to Next Slower Command in File moves back up the ranking toward slower commands.
Across the whole development (every .v.timing file in the workspace):
- Rocq Timing: Go to Slowest Command in Development jumps to the slowest command anywhere in the development, opening the file if needed.
- Rocq Timing: Go to Next-Slowest Command in Development advances down the development-wide ranking to the next command.
- Rocq Timing: Go to Next Slower Command in Development moves back up the development-wide ranking toward slower commands.
The Development and File jump commands work interchangeably; i.e., you can jump to the slowest command in a development and then navigate the next-slowest or next-slower commands in that file independently.
Installation
Install Rocq Timing from the VSCode Marketplace, or from inside VSCode:
open the Extensions view (⇧⌘X / Ctrl+Shift+X), search for Rocq Timing, and
click Install.
Known limitations
-
Byte offsets in the
.v.timingfile are recorded whenROCQ -timeruns.If you edit the
.vfile without rebuilding, the painted ranges drift, and jump targets can drift too. Please verify that you rebuilt.v.timingfiles before submitting a bug report!Rebuild and re-run the Show Overlays command to refresh the times.
Contributing
Bug reports, feature requests, and pull requests are welcome. Please open an issue or a pull request on GitHub.
License
Released under the MIT License.