commit bb34ab8d50cbe4c9525d06e4cb67fb58e48ae8b8
parent b829948d9da8dbbea6d7275ebc1021000114ba15
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Fri, 8 Jan 2021 11:58:48 +0100
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.
Diffstat:
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git 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);
}
}
}