]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: Increase stream allocation speed.
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 2 Aug 2018 17:42:15 +0000 (13:42 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 2 Aug 2018 18:57:44 +0000 (14:57 -0400)
Modify stream_new in this way:

1) ALLOC allocations do not fail, they cause a crash so remove
if tests for it.

2) Modify usage of XCALLOC to XMALLOC and then hand set all the
relevant data in the stream pointer.

With this modification stream allocation of 10000000 streams at
10k bytes each reduced from on average 1.43 seconds to 0.65 seconds.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
lib/stream.c

index a172eedc995256ee378e77fa23849259dbf4a53d..cf9af4d3bb98fd768e8b3a9fe64acb20a33df60b 100644 (file)
@@ -100,16 +100,12 @@ struct stream *stream_new(size_t size)
 
        assert(size > 0);
 
-       s = XCALLOC(MTYPE_STREAM, sizeof(struct stream));
+       s = XMALLOC(MTYPE_STREAM, sizeof(struct stream));
 
-       if (s == NULL)
-               return s;
-
-       if ((s->data = XMALLOC(MTYPE_STREAM_DATA, size)) == NULL) {
-               XFREE(MTYPE_STREAM, s);
-               return NULL;
-       }
+       s->data = XMALLOC(MTYPE_STREAM_DATA, size);
 
+       s->getp = s->endp = 0;
+       s->next = NULL;
        s->size = size;
        return s;
 }