Jeff King <peff@xxxxxxxx> writes: > ... 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. > 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. ;-).