Benchmarks
This page gives the machine, the versions, the repos and the method of each number in the README. You can repeat each run.
- Machine: Apple M1 Pro, 16 GB of memory, macOS 26.5.2.
- Binary: Sieve 0.1.0, a release build of
sieve-cli. - The numbers are re-measured on the release commit before each release.
- ripgrep: commit 3fce3b5bb0236da2df6d99672afb8a719642eca7 (111 files).
- vite: commit 10033218d239c927cdc375970b5741cce408e81b (1583 files).
- Each repo is a fresh shallow clone with no
sieve/folder.
Method
Section titled “Method”- Cold build: run
sieve build .on 3 fresh copies of the clone, with nosieve/folder. Report the median. - Warm build: run the same command again with no change. The number is the median of 5 runs.
asklatency: 10 questions per repo, each run 3 times. That gives 30 timings. The number is the wall time of onesieve askprocess. Report the median and the maximum.- Answer size: count the bytes of
sieve ask "<question>" --source. Count the bytes of every distinct file the output names. Compare the two totals. This is not tokens. It is not an agent session. - Exact cross-file calls: an oracle script lists the call rows that the TypeScript compiler resolves in vite. A compare script checks each Extracted cross-file call edge. An edge matches if the compiler has a call in the same source file. The call must resolve to the same target file and the same name. Sieve found 1,232 such edges. All 1,232 match. The 621 calls that stay Inferred are not counted.
- The questions were written before the first run. No question was dropped. Medians move by a few ms because the times are 25 to 250 ms.
Results
Section titled “Results”| Number | ripgrep | vite |
|---|---|---|
| Cold build | 0.73 s | 1.83 s |
| Warm build | 0.31 s | 0.80 s |
ask median, max |
62 ms, 101 ms | 158 ms, 185 ms |
| Answer size against file size | 60,093 B against 3,068,726 B | 67,162 B against 806,930 B |
The 20 questions
Section titled “The 20 questions”ripgrep:
- how does ripgrep respect gitignore rules while walking directories
- how are glob patterns compiled into a matcher
- how does ripgrep decompress files before searching
- how does the searcher detect binary files
- how does ripgrep print search results with colors
- how does ripgrep output results as JSON lines
- how are command line flags parsed
- how does the PCRE2 regex matcher work
- how does ripgrep search files in parallel
- how does ripgrep handle file type definitions like rust or python
vite:
- how does vite resolve module imports
- how does hot module replacement work
- how does vite load and merge the config file
- how does the dependency optimizer pre-bundle packages
- how does the dev server handle requests with middlewares
- how does vite process CSS and CSS modules
- how does vite handle static assets and the public directory
- how does the plugin container run plugin hooks
- how does vite build for production
- how does vite preview the production build
Limits
Section titled “Limits”- Sieve has not measured token savings in an agent session.
- The runs used one machine. Other machines give other times.