libsheepy

C lib for handling text files, strings and json like data structure with an object oriented system
git clone https://spartatek.se/git/libsheepy.git
Log | Files | Refs | README | LICENSE

commit 4d1e459b77c9fd56384555d68c1c817b8ecd09a6
parent 832254f482339762aebcba278e34972cfb01933f
Author: Remy Noulin <loader2x@gmail.com>
Date:   Sat,  4 Jan 2025 20:19:39 +0200

speed up splitSSmallString

release/libsheepy.h              |  2 +-
src/json/libsheepyCSmallString.c | 13 ++++++++++---
src/libsheepy.h                  |  2 +-
3 files changed, 12 insertions(+), 5 deletions(-)

Diffstat:
Mrelease/libsheepy.h | 2+-
Msrc/json/libsheepyCSmallString.c | 13++++++++++---
Msrc/libsheepy.h | 2+-
3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/release/libsheepy.h b/release/libsheepy.h @@ -98,7 +98,7 @@ // version accoring to the version package: Release.Major.minor.patch // https://noulin.net/version/file/README.md.html -#define LIBSHEEPY_VERSION "2.2.16.1" +#define LIBSHEEPY_VERSION "2.2.16.2" #ifndef SH_PREFIX #define SH_PREFIX(NAME) NAME diff --git a/src/json/libsheepyCSmallString.c b/src/json/libsheepyCSmallString.c @@ -4758,10 +4758,16 @@ internal char** splitSSmallString(smallStringt *self, const char *delim) { // split using strtok_r startSmallString = strdup(sStringGetTiny(self->data)); workingSmallString = startSmallString; + + // preallocate list r + ssize_t rlen = countS(startSmallString, delim) + 2; /* extra empty line at the end + null*/ + r = malloc(rlen * sizeof(char*)); + u32 ridx = 0; + line = workingSmallString; while (strlen(workingSmallString) != 0) { - token = tokS(line, delim, &workingSmallString); - pErrorNULL(listPushS(&r, token)); + token = tokS(line, delim, &workingSmallString); + r[ridx++] = strdup(token); // mac os sets workingSmallString to NULL at the end if (!workingSmallString) { break; //LCOV_EXCL_LINE @@ -4777,9 +4783,10 @@ internal char** splitSSmallString(smallStringt *self, const char *delim) { size_t lenD = strlen(delim); // +1 for sType if (strEq(sStringGetTiny(self->data)+(self->_len-lenD), delim)) { - pErrorNULL(listPushS(&r, "")); + r[ridx++] = strdup("");; } + r[ridx] = NULL;; return(r); } diff --git a/src/libsheepy.h b/src/libsheepy.h @@ -98,7 +98,7 @@ // version accoring to the version package: Release.Major.minor.patch // https://noulin.net/version/file/README.md.html -#define LIBSHEEPY_VERSION "2.2.16.1" +#define LIBSHEEPY_VERSION "2.2.16.2" #ifndef SH_PREFIX #define SH_PREFIX(NAME) NAME