You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2011/02/11 11:52:05 UTC
svn commit: r1069743 - /subversion/trunk/subversion/libsvn_subr/svn_string.c
Author: ivan
Date: Fri Feb 11 10:52:05 2011
New Revision: 1069743
URL: http://svn.apache.org/viewvc?rev=1069743&view=rev
Log:
Optimize svn_string_t creation by allocating memory for svn_string_t
structure and data in one chunk.
* subversion/libsvn_subr/svn_string.c
(svn_string_ncreate): Allocate memory for svn_string_t and data in one
chunk.
Modified:
subversion/trunk/subversion/libsvn_subr/svn_string.c
Modified: subversion/trunk/subversion/libsvn_subr/svn_string.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/svn_string.c?rev=1069743&r1=1069742&r2=1069743&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/svn_string.c (original)
+++ subversion/trunk/subversion/libsvn_subr/svn_string.c Fri Feb 11 10:52:05 2011
@@ -135,9 +135,18 @@ create_string(const char *data, apr_size
svn_string_t *
svn_string_ncreate(const char *bytes, apr_size_t size, apr_pool_t *pool)
{
+ void *mem;
char *data;
+ svn_string_t *new_string;
+
+ /* Allocate memory for svn_string_t and data in one chunk. */
+ mem = apr_palloc(pool, sizeof(*new_string) + size + 1);
+ data = (char*)mem + sizeof(*new_string);
+
+ new_string = mem;
+ new_string->data = data;
+ new_string->len = size;
- data = apr_palloc(pool, size + 1);
memcpy(data, bytes, size);
/* Null termination is the convention -- even if we suspect the data
@@ -145,8 +154,7 @@ svn_string_ncreate(const char *bytes, ap
call. Heck, that's why they call it the caller! */
data[size] = '\0';
- /* wrap an svn_string_t around the new data */
- return create_string(data, size, pool);
+ return new_string;
}
Re: svn commit: r1069743 - /subversion/trunk/subversion/libsvn_subr/svn_string.c
Posted by Philip Martin <ph...@wandisco.com>.
Julian Foad <ju...@wandisco.com> writes:
> On Fri, 2011-02-11, ivan@apache.org wrote:
>> URL: http://svn.apache.org/viewvc?rev=1069743&view=rev
>> Log:
>> Optimize svn_string_t creation by allocating memory for svn_string_t
>> structure and data in one chunk.
>>
>> * subversion/libsvn_subr/svn_string.c
>> (svn_string_ncreate): Allocate memory for svn_string_t and data in one
>> chunk.
>
> Nice optimization!
It does save a function call, but the memory pools mean that there is no
memory saving. It's probably more of an optimization when pool
debugging is enabled :)
--
Philip
Re: svn commit: r1069743 -
/subversion/trunk/subversion/libsvn_subr/svn_string.c
Posted by Julian Foad <ju...@wandisco.com>.
On Fri, 2011-02-11, ivan@apache.org wrote:
> URL: http://svn.apache.org/viewvc?rev=1069743&view=rev
> Log:
> Optimize svn_string_t creation by allocating memory for svn_string_t
> structure and data in one chunk.
>
> * subversion/libsvn_subr/svn_string.c
> (svn_string_ncreate): Allocate memory for svn_string_t and data in one
> chunk.
Nice optimization!
- Julian