diff options
| author | TazyFoundSoup <gardendistrict0x0@outlook.com> | 2026-05-05 20:01:04 +1000 |
|---|---|---|
| committer | TazyFoundSoup <gardendistrict0x0@outlook.com> | 2026-05-05 20:01:04 +1000 |
| commit | 170921f8c21b498ed9a497c52931e72e791f2fd9 (patch) | |
| tree | 1c7e681a5b4bd1dea65de388931d4ac1ed9d9de8 | |
| parent | df61c616e7e639d5782599c65de44464c2c50367 (diff) | |
feat(png): add benchmark markers to png decoding
| -rw-r--r-- | bench/bench.h | 17 | ||||
| -rw-r--r-- | bench/src/format/image/png.c | 6 | ||||
| -rw-r--r-- | src/format/image/png.c | 14 |
3 files changed, 24 insertions, 13 deletions
diff --git a/bench/bench.h b/bench/bench.h index 9496df9..fc226d9 100644 --- a/bench/bench.h +++ b/bench/bench.h @@ -24,18 +24,15 @@ typedef struct { // These need to be inline so they are fast -static inline ff_bench ff_bench_start(const char* label) { - ff_bench b; - b.label = label; - b._start = clock(); - b._end = 0; - - // Markers - b._mcount = 0; - - return b; +static inline void ff_bench_start(ff_bench *b, const char* label) { + b->label = label; + b->_start = clock(); + b->_end = 0; + b->_mcount = 0; + } + static inline void ff_bench_end(ff_bench *b) { b->_end = clock(); } diff --git a/bench/src/format/image/png.c b/bench/src/format/image/png.c new file mode 100644 index 0000000..016f686 --- /dev/null +++ b/bench/src/format/image/png.c @@ -0,0 +1,6 @@ +#include "bench.h" + +int main(void) +{ + +} diff --git a/src/format/image/png.c b/src/format/image/png.c index 43cab04..e8aefcb 100644 --- a/src/format/image/png.c +++ b/src/format/image/png.c @@ -47,8 +47,10 @@ static ff_result ff_png_dispatch(ff_ctx* ctx, ff_stream* stream, ff_png_ctx *png for (int i = 0; ff_png_chunk_handlers[i].type != NULL; i++) { if (ff_memcmp(chunk_type, ff_png_chunk_handlers[i].type, 4) == 0) { - if (ff_png_chunk_handlers[i].handler != NULL) + if (ff_png_chunk_handlers[i].handler != NULL) { + FF_BENCH_MARK(ctx, ff_png_chunk_handlers[i].type); ff_png_chunk_handlers[i].handler(ctx, chunk_data, length, png_ctx); + } break; } } @@ -81,7 +83,9 @@ static ff_result ff_png_dispatch(ff_ctx* ctx, ff_stream* stream, ff_png_ctx *png } ff_result ff_png_isvalid(ff_ctx* ctx, ff_stream *stream) -{ +{ + FF_BENCH_MARK(ctx, "ff_png_isvalid"); + ff_dprintf(ctx, "png: validating signature\n"); char raw_sig[8]; @@ -106,7 +110,9 @@ ff_result ff_png_isvalid(ff_ctx* ctx, ff_stream *stream) } ff_result ff_open_png(ff_ctx* ctx, ff_stream *stream, ff_png_ctx **out_ctx, ff_flag require_valid) -{ +{ + FF_BENCH_START(ctx, "png"); + FF_BENCH_MARK(ctx, "ff_open_png"); ff_png_ctx *png_ctx = ctx->allocator.ff_alloc(sizeof(ff_png_ctx)); if (!png_ctx) { @@ -470,6 +476,8 @@ ff_result ff_close_png(ff_ctx* ctx, ff_png_ctx *png_ctx) ctx->allocator.ff_free(png_ctx); ff_dprintf(ctx, "png: successfully freed png context\n"); + FF_BENCH_END(ctx); + return FF_RESULT_OK; } |
