From 92a97df033086d0ed88c38ad1efe4a2a023eb5fe Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Tue, 11 Feb 2025 06:33:33 +0100 Subject: feat(json): Reduce int memory usage --- README.md | 2 ++ json.c | 2 +- main.c | 8 ++++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 431a2d0..24274e1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # Kagamic ## TODO + +- Testing setup diff --git a/json.c b/json.c index 6948edf..cf40634 100644 --- a/json.c +++ b/json.c @@ -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'); diff --git a/main.c b/main.c index 8d46d82..2028049 100644 --- a/main.c +++ b/main.c @@ -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; } -- cgit v1.3