From bb34ab8d50cbe4c9525d06e4cb67fb58e48ae8b8 Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Fri, 8 Jan 2021 11:58:48 +0100 Subject: xmlencode: optimize common character output function Use putc instead of fputc, it can be optimized to macros. From the OpenBSD man page: " putc() acts essentially identically to fputc(), but is a macro that expands in-line. It may evaluate stream more than once, so arguments given to putc() should not be expressions with potential side effects." sfeed_atom, sfeed_frames and sfeed_html are using this function. Mini-benchmarked sfeed_html and it went from 1.45s to 1.0s with feed files in total 250k lines (+- 350MB). Tested with clang and gcc on OpenBSD on an older laptop. --- util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util.c b/util.c index a91ca2e..1c5f40e 100644 --- a/util.c +++ b/util.c @@ -222,7 +222,7 @@ xmlencode(const char *s, FILE *fp) case '\'': fputs("'", fp); break; case '&': fputs("&", fp); break; case '"': fputs(""", fp); break; - default: fputc(*s, fp); + default: putc(*s, fp); } } } -- cgit v1.2.3