OXYGENHUB

Timing phases for writing the manifest (refs #41) 94cdbc576ce1

Encoding and writing timed apart, with how many rows lacked a stat or
a hash: on the Linux tree a commit's manifest is 11 to 34 ms of
encoding, 6 to 8 ms of writing.
Author
Andy McCall @andymccall <[email protected]>
When
· 2026-10-02 03:42 UTC
Signature
✔ signed by Andy McCall
Hash
94cdbc576ce181f578a696089134a0c52f5d91057d9e80c8553d9ea4d889a0f2
Depends on
135212de5370 1966f5db15ee 1ec3f008e96a
Depended on by
nothing yet
In bookmarks
agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
In tags
v0.10.0 v0.11.0 v0.3.0 v0.3.1 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
Edits
2 atoms, 0 tree operations, 1 file

Browse the tree at this change

modified crates/oxy-core/src/repo/prompt.rs +14 −0
…
398 unchanged lines
399 399
            };
400 400
            (path.as_str(), entry)
401 401
        });
402 +
        let encoding = crate::timing::phase("manifest: rows and encoding");
402 403
        // The directories of the walk these entries came from, if any.
403 404
        let (dirs, nested) = self.walked_dirs.take().unwrap_or_default();
404 405
        let new = encode_manifest(conflicted, uncommitted, written, &dirs, &nested, &mut rows);
405 406
        drop(rows);
407 +
        drop(encoding);
408 +
        if crate::timing::enabled() {
409 +
            let unstated = entries.values().filter(|e| e.stat.is_none()).count();
410 +
            let unhashed = entries
411 +
                .values()
412 +
                .filter(|e| e.content_hash.is_none())
413 +
                .count();
414 +
            eprintln!(
415 +
                "timing manifest: {} rows, {unstated} without a stat, {unhashed} without a hash",
416 +
                entries.len()
417 +
            );
418 +
        }
419 +
        let _t = crate::timing::phase("manifest: compare and write");
406 420
        let p = self.manifest_path();
407 421
        // Leave an unchanged manifest alone when its stamp already trusts
408 422
        // every entry (none is within the racy window): rewriting it would
…
490 unchanged lines