diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2025-02-11 06:33:33 +0100 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2025-02-11 06:33:33 +0100 |
| commit | 92a97df033086d0ed88c38ad1efe4a2a023eb5fe (patch) | |
| tree | b1dfd84872ec9409a9282f4359b59be830d1acec | |
| parent | 10379fdde9fa5e94a955fe35f14e5b35de2a0e5d (diff) | |
feat(json): Reduce int memory usage
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | json.c | 2 | ||||
| -rw-r--r-- | main.c | 8 |
3 files changed, 7 insertions, 5 deletions
@@ -1,3 +1,5 @@ # Kagamic ## TODO + +- Testing setup @@ -14,7 +14,7 @@ typedef struct { } parse_integer_result; parse_integer_result parse_integer(Arena *a, char *src, uintptr_t pos) { - int *ints = new (a, int, 16); // TODO: reuse in parsing + char ints[16]; int i = 0; while (isdigit(src[pos + i])) { int val = (src[pos + i] - '0'); @@ -32,7 +32,7 @@ int main() { JSON json_int = JSON_parse(&perm, "123"); assert(*json_int.integer == 123); printf("Arena: mem=%d B\n", Arena_get_used(perm)); - assert(Arena_get_used(perm) == 72); + assert(Arena_get_used(perm) == 5); JSON json_int_array = JSON_parse(&perm, "[1,2,3]"); assert(json_int_array.integer == NULL); assert(json_int_array.array->len == 3); @@ -42,13 +42,13 @@ int main() { } assert(sum == 6); printf("Arena: mem=%d B\n", Arena_get_used(perm)); - assert(Arena_get_used(perm) == 304); + assert(Arena_get_used(perm) == 48); assert(*Vec_get(JSON_parse(&perm, "[1, 2, 3]").array, int, 1) == 2); printf("Arena: mem=%d B\n", Arena_get_used(perm)); - assert(Arena_get_used(perm) == 536); + assert(Arena_get_used(perm) == 88); JSON js = JSON_parse(&perm, "\"abc\""); assert(Str_equals(*js.string, S("abc")) == 1); printf("Arena: mem=%d B\n", Arena_get_used(perm)); - assert(Arena_get_used(perm) == 539); + assert(Arena_get_used(perm) == 91); return 0; } |
