Re: [PATCH] rev-list: preallocate object hash table in --all --objects
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 29, 2013, 16:04 UTC
- Message-ID
- <7vsj3ep4zn.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20130329151208.GA22744@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 21 quoted lines
> This feels weirdly specific, and like we should just be tuning our hash
> table growth better. You show a 3.2% speedup here. I was able to get a
> 2.8% speedup just by doing this:
>
> diff --git a/object.c b/object.c
> index 20703f5..8e5e12c 100644
> --- a/object.c
> +++ b/object.c
> @@ -91,7 +91,7 @@ static void grow_object_hash(void)
> static void grow_object_hash(void)
> {
> int i;
> - int new_hash_size = obj_hash_size < 32 ? 32 : 2 * obj_hash_size;
> + int new_hash_size = obj_hash_size < 32 ? 32 : 3 * obj_hash_size;
> struct object **new_hash;
>
> new_hash = xcalloc(new_hash_size, sizeof(struct object *));
>
> It might be worth trying to figure out what the optimium growth rate is
> first, which would help this use case and others. With less fragile
> code.I agree with the general principle to avoid heuristics that is too specific to the use case. Thanks.