subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bert Huijben" <b...@qqmail.nl>
Subject RE: svn commit: r1707196 - /subversion/trunk/subversion/libsvn_subr/stream.c
Date Wed, 07 Oct 2015 11:08:48 GMT


> -----Original Message-----
> From: ivan@apache.org [mailto:ivan@apache.org]
> Sent: woensdag 7 oktober 2015 09:57
> To: commits@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
> 



Mime
View raw message