On Wed, 11 Sep 2013, Jeff King wrote: > On Tue, Sep 10, 2013 at 06:17:12PM -0400, Nicolas Pitre wrote: > > > Also remove the modulus as this is an expansive operation. > > The size argument is always a power of 2 anyway, so a simple > > mask operation provides the same result. > > > > On a 'git rev-list --all --objects' run this decreased the time spent > > in lookup_object from 27.5% to 24.1%. > > Nice. This is a tiny bit subtle, though, as the power-of-2 growth > happens elsewhere, and we may want to tweak it later (the decorate.c > hash, for example, grows by 3/2). > > Maybe it's worth squashing in one or both of the comments below as a > warning to anybody who tries to tweak it. Agreed. @Junio: are you willing to squash those in, or do you prefer a resent? > --- > diff --git a/object.c b/object.c > index e2dae22..5f792cb 100644 > --- a/object.c > +++ b/object.c > @@ -47,6 +47,7 @@ static unsigned int hash_obj(const unsigned char *sha1, unsigned int n) > { > unsigned int hash; > memcpy(&hash, sha1, sizeof(unsigned int)); > + /* Assumes power-of-2 hash sizes in grow_object_hash */ > return hash & (n - 1); > } > > @@ -94,6 +95,10 @@ static void grow_object_hash(void) > static void grow_object_hash(void) > { > int i; > + /* > + * Note that this size must always be power-of-2 to match hash_obj > + * above. > + */ > int new_hash_size = obj_hash_size < 32 ? 32 : 2 * obj_hash_size; > struct object **new_hash; > > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html