diff options
Diffstat (limited to 'tests2/buffer_printf2_perf.c')
-rw-r--r-- | tests2/buffer_printf2_perf.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/tests2/buffer_printf2_perf.c b/tests2/buffer_printf2_perf.c new file mode 100644 index 00000000..d7edf576 --- /dev/null +++ b/tests2/buffer_printf2_perf.c @@ -0,0 +1,81 @@ +/* + * Copyright(c) 2012 Tim Ruehsen + * + * This file is part of MGet. + * + * Wget is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Wget is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Wget. If not, see <http://www.gnu.org/licenses/>. + * + * + * testing performance of buffer printf routines + * + * Changelog + * 06.07.2012 Tim Ruehsen created + * + */ + +#if HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdio.h> + +#include <libwget.h> + +int main(void) +{ + int it; + wget_buffer_t buf; + char sbuf[128]; + + wget_buffer_init(&buf, sbuf, sizeof(sbuf)); + + for (it = 0; it < 10000000; it++) { + // buffer: 0.239s libc: 0.018s (gcc replaces sprintf(%s) by strcpy()) +// snprintf(sbuf,sizeof(sbuf),"%s", "teststring sabbeldi heidewitzka\n"); +// buffer_printf2(&buf,"%s", "teststring sabbeldi heidewitzka\n"); + + // buffer: 0.306s libc: 1.040s +// sprintf(sbuf,"%s\n", "teststring sabbeldi heidewitzka\n"); +// buffer_printf2(&buf,"%s\n", "teststring sabbeldi heidewitzka\n"); + + // function call and loop overhead: buffer: 0.072s libc: 0.390s +// buffer_printf2(&buf, "", "teststring sabbeldi heidewitzka\n"); +// sprintf(sbuf, "", "teststring sabbeldi heidewitzka\n"); + + // buffer: 0.392s libc: 0.838s +// sprintf(sbuf,"%.*s\n", 17, "teststring sabbeldi heidewitzka\n"); +// buffer_printf2(&buf,"%.*s\n", 17, "teststring sabbeldi heidewitzka\n"); + + // buffer: 0.407s libc: 0.960s +// sprintf(sbuf,"%d\n", it); +// buffer_printf2(&buf,"%d\n", it); + + // buffer: 0.643s libc/sprintf: 1.251s libc/snprintf: 1.253s +// snprintf(sbuf,sizeof(sbuf),"%10.*d\n", 8, it); +// sprintf(sbuf,"%10.*d\n", 8, it); +// buffer_printf2(&buf,"%10.*d\n", 8, it); + + // buffer: 0.456s libc: 0.867s +// sprintf(sbuf,"%X\n", it); + wget_buffer_printf2(&buf, "%X\n", it); + + // buffer: 0.955s libc: 1.648s +// sprintf(sbuf,"teststring %s sabbeldi %d\n", "[foobar foobar foobar]", it); +// buffer_printf2(&buf,"teststring %s sabbeldi %d\n", "[foobar foobar foobar]", it); + } + + wget_buffer_deinit(&buf); + + return 0; +} |