Re: [PATCH 3/3] revision: avoid parsing with --exclude-promisor-objects
Jeff King <peff@peff.net> writes:
Show 14 quoted lines
> ... The only reason we call parse_object() is that
> we need a "struct object" on which to set the flags. There are two
> options here:
>
> - we can look up just the object type via oid_object_info(), and then
> call the appropriate lookup_foo() function
>
> - we can call lookup_unknown_object(), which gives us an OBJ_NONE
> struct (which will get auto-converted later by object_as_type() via
> calls to lookup_commit(), etc).
>
> The first one is closer to the current code, but we do pay the price to
> look up the type for each object. The latter should be more efficient in
> CPU, though it wastes a little bit of memory (the "unknown" object
That's clever. I like it.
Show 6 quoted lines
> 5600.5: count commits 0.37(0.37+0.00) 0.38(0.38+0.00) +2.7%
> 5600.6: count non-promisor commits 11.74(11.37+0.37) 0.04(0.03+0.00) -99.7%
>
> The improvement is particularly big in this script because _every_
> object in the newly-cloned partial repo is a promisor object. So after
> marking them all, there's nothing left to traverse.