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