sfeed

Simple RSS and Atom feed parser
git clone https://git.sinitax.com/codemadness/sfeed
Log | Files | Refs | README | LICENSE | Upstream | sfeed.txt

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:
Mutil.c | 2+-
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("&#39;", fp); break; case '&': fputs("&amp;", fp); break; case '"': fputs("&quot;", fp); break; - default: fputc(*s, fp); + default: putc(*s, fp); } } }