optimization for buffer write easy cases

Sun, 01 May 2022 11:54:10 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 01 May 2022 11:54:10 +0200
changeset 543
7b9114030ca4
parent 542
45bcfd152f85
child 544
2e73456e5f84

optimization for buffer write easy cases

src/buffer.c file | annotate | diff | comparison | revisions
     1.1 --- a/src/buffer.c	Sun May 01 11:46:54 2022 +0200
     1.2 +++ b/src/buffer.c	Sun May 01 11:54:10 2022 +0200
     1.3 @@ -140,7 +140,16 @@
     1.4          size_t nitems,
     1.5          CxBuffer *buffer
     1.6  ) {
     1.7 -    // TODO: optimize for special case size == nitems == 1
     1.8 +    // optimize for easy case
     1.9 +    if (size == 1 && (buffer->capacity - buffer->pos) >= nitems) {
    1.10 +        memcpy(buffer->bytes + buffer->pos, ptr, nitems);
    1.11 +        buffer->pos += nitems;
    1.12 +        if (buffer->pos > buffer->size) {
    1.13 +            buffer->size = buffer->pos;
    1.14 +        }
    1.15 +        return nitems;
    1.16 +    }
    1.17 +
    1.18      size_t len;
    1.19      if (cx_szmul(size, nitems, &len)) {
    1.20          return 0;

mercurial