Re: [PATCH] speed: reuse char instead of recreation in loop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thomas Spura schrieb:
> Move a char and a char * outside of a for loop for speed improvements

It's a good idea to include actual timings, to give the reader a better
idea what operation is sped up and by how much.

> Signed-off-by: Thomas Spura <tomspur@xxxxxxxxxxxxxxxxx>
> ---
> Comments?
> 
>  transport.c |    7 +++----
>  1 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/transport.c b/transport.c
> index 17891d5..e350937 100644
> --- a/transport.c
> +++ b/transport.c
> @@ -263,11 +263,10 @@ static int write_refs_to_temp_dir(struct strbuf 
> *temp_dir,

Please turn off automatic line wrapping in your email program when
sending patches (at least for the patch part).

>  		int refspec_nr, const char **refspec)
>  {
>  	int i;
> +	unsigned char sha1[20];
> +	char *ref;
>  
>  	for (i = 0; i < refspec_nr; i++) {
> -		unsigned char sha1[20];
> -		char *ref;
> -

I wouldn't expect this to significantly change the object code.
Declaring variables in as narrow a scope as possible often helps to make
the code more readable, though.  write_refs_to_temp_dir() is short
enough, so it doesn't matter in this case, though.

>  		if (dwim_ref(refspec[i], strlen(refspec[i]), sha1, &ref) !
> = 1)
>  			return error("Could not get ref %s", refspec[i]);
>  
> @@ -275,8 +274,8 @@ static int write_refs_to_temp_dir(struct strbuf 
> *temp_dir,
>  			free(ref);
>  			return -1;
>  		}
> -		free(ref);
>  	}
> +	free(ref);
>  	return 0;
>  }

This introduces a memory leak.  The string pointed to by ref is
allocated by dwim_ref() and needs to be free()'d after use, and -- more
importantly -- before ref is assigned its next value by dwim_ref().

René
--
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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]