> -----Original Message-----
> From: ivan_at_apache.org [mailto:ivan_at_apache.org]
> Sent: woensdag 7 oktober 2015 09:57
> To: commits_at_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
>
Received on 2015-10-07 13:09:04 CEST