Add read-update-write benchmarks
Add benchmarks for parsing, updating, and serializing in Rust and C. Update the fork instructions in AGENTS.md.
This commit is contained in:
@@ -342,6 +342,34 @@ static void fn_count_all_crew(void *state) {
|
||||
upb_Arena_Free(arena);
|
||||
}
|
||||
|
||||
static void fn_read_update_write(void *state) {
|
||||
BenchData *d = state;
|
||||
upb_Arena *arena = upb_Arena_New();
|
||||
Campaign *c = Campaign_parse((const char *)d->data, d->len, arena);
|
||||
|
||||
upb_StringView name = { .data = "updated", .size = 7 };
|
||||
Campaign_set_name(c, name);
|
||||
|
||||
size_t len;
|
||||
char *out = Campaign_serialize(c, arena, &len);
|
||||
g_sink = (uintptr_t)out;
|
||||
|
||||
upb_Arena_Free(arena);
|
||||
}
|
||||
|
||||
static void bench_read_update_write(void) {
|
||||
const char *sizes[] = {"tiny", "small", "medium", NULL};
|
||||
printf("\n=== read_update_write ===\n");
|
||||
for (int i = 0; sizes[i]; i++) {
|
||||
BenchData d;
|
||||
if (!load_bench_data(&d, sizes[i])) continue;
|
||||
char label[80];
|
||||
snprintf(label, sizeof(label), "Campaign_parse+set+serialize/%s [%zu B]", sizes[i], d.len);
|
||||
run_bench(fn_read_update_write, &d, d.len, label);
|
||||
free_bench_data(&d);
|
||||
}
|
||||
}
|
||||
|
||||
static void bench_iterate(void) {
|
||||
const char *sizes[] = {"tiny", "small", "medium", NULL};
|
||||
printf("\n=== iterate ===\n");
|
||||
@@ -374,6 +402,7 @@ int main(void) {
|
||||
bench_deep_parse();
|
||||
bench_field_access();
|
||||
bench_iterate();
|
||||
bench_read_update_write();
|
||||
|
||||
printf("\n");
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user