Sun, 01 May 2022 11:54:10 +0200
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;