> -----Original Message-----
> From: i...@apache.org [mailto:i...@apache.org]
> Sent: woensdag 7 oktober 2015 09:57
> To: comm...@subversion.apache.org
> Subject: svn commit: r1707196 -
> /subversion/trunk/subversion/libsvn_subr/stream.c
> 
> Author: ivan
> Date: Wed Oct  7 07:57:05 2015
> New Revision: 1707196
> 
> URL: http://svn.apache.org/viewvc?rev=1707196&view=rev
> Log:
> Slightly optimize svn_stringbuf_from_stream() to avoid allocating twice
> more memory and unnecessary memcpy() when LEN_HINT is equal to final
> stringbuf
> length.
> 
> * subversion/libsvn_subr/stream.c
>   (svn_stringbuf_from_stream): Always preallocate LEN_HINT +
> MIN_READ_SIZE
>    bytes to be able perform final read without stringbuf reallocation.

Can you explain why hint + MIN_READ_SIZE instead of something like 
MAX(len_hint+1, MIN_READ_SIZE)

I don't know what MIN_READ_SIZE is from just this patch, but it could easily be 
something like 16 Kbyte, while len_hint could be something like 16 for a file 
like 'format' that was just statted to obtain the actual size

16 Kbyte + 16 bytes for a 16 bytes file looks a bit large... And allocating 16 
+ 32 bytes is far more efficient than allocating that huge chunk at once.

        Bert Huijben

> 
> Modified:
>     subversion/trunk/subversion/libsvn_subr/stream.c
> 
> Modified: subversion/trunk/subversion/libsvn_subr/stream.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/str
> eam.c?rev=1707196&r1=1707195&r2=1707196&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_subr/stream.c (original)
> +++ subversion/trunk/subversion/libsvn_subr/stream.c Wed Oct  7 07:57:05
> 2015
> @@ -1490,7 +1490,7 @@ svn_stringbuf_from_stream(svn_stringbuf_
> 
>    apr_size_t to_read = 0;
>    svn_stringbuf_t *text
> -    = svn_stringbuf_create_ensure(len_hint ? len_hint : MIN_READ_SIZE,
> +    = svn_stringbuf_create_ensure(len_hint + MIN_READ_SIZE,
>                                    result_pool);
> 
>    do
> 


Reply via email to