diff options
author | Carsten Haitzler <raster@rasterman.com> | 2005-05-10 13:35:33 +0000 |
---|---|---|
committer | Carsten Haitzler <raster@rasterman.com> | 2005-05-10 13:35:33 +0000 |
commit | 0a19215d503ae02b1053ad78ac5c050f608ec632 (patch) | |
tree | 6a3d25661c949b1862eed076d622e83099ae50b1 /src/bin | |
parent | 48105615daf87b236d90cc1c0b671a82ade13bc6 (diff) | |
download | eet-0a19215d503ae02b1053ad78ac5c050f608ec632.tar.gz |
slightly faster image load
SVN revision: 14696
Diffstat (limited to 'src/bin')
-rw-r--r-- | src/bin/Makefile.am | 8 | ||||
-rw-r--r-- | src/bin/eet_bench_main.c | 114 |
2 files changed, 121 insertions, 1 deletions
diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 3e8351c..3fb463f 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -2,10 +2,16 @@ MAINTAINERCLEANFILES = Makefile.in INCLUDES = -I$(top_srcdir)/src/lib -bin_PROGRAMS = eet +bin_PROGRAMS = eet eet_bench eet_SOURCES = \ eet_main.c eet_LDADD = $(top_builddir)/src/lib/libeet.la eet_DEPENDENCIES = $(top_builddir)/src/lib/libeet.la + +eet_bench_SOURCES = \ +eet_bench_main.c + +eet_bench_LDADD = $(top_builddir)/src/lib/libeet.la +eet_bench_DEPENDENCIES = $(top_builddir)/src/lib/libeet.la diff --git a/src/bin/eet_bench_main.c b/src/bin/eet_bench_main.c new file mode 100644 index 0000000..88aa364 --- /dev/null +++ b/src/bin/eet_bench_main.c @@ -0,0 +1,114 @@ +#include "Eet.h" +#include <stdio.h> +#include <unistd.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <dirent.h> +#include <limits.h> +#include <fnmatch.h> +#include <sys/time.h> +#include <time.h> + +double +get_time(void) +{ + struct timeval timev; + + gettimeofday(&timev, NULL); + return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); +} + +int +main(int argc, char **argv) +{ + char *file; + Eet_File *ef; + char **items; + int items_num; + int i; + double t1, t2; + + file = argv[1]; + ef = eet_open(file, EET_FILE_MODE_READ); + if (ef) + { + items = eet_list(ef, "images/*", &items_num); + for (i = 0; i < items_num; i++) + items[i] = strdup(items[i]); + eet_close(ef); + } + else + { + printf("EEK. cannot load %s\n", file); + exit(-1); + } + + t1 = get_time(); + ef = eet_open(file, EET_FILE_MODE_READ); + if (ef) + { + for (i = 0; i < items_num; i++) + { + int w, h, alpha, compress, quality, lossy; + void *data; + + if (eet_data_image_header_read(ef, items[i], &w, &h, &alpha, &compress, &quality, &lossy)) + { + data = eet_data_image_read(ef, items[i], &w, &h, &alpha, &compress, &quality, &lossy); + if (data) free(data); + else + { + printf("failure reading %s (%i/%i\n", items[i], i, items_num); + exit(-1); + } + } + else + { + printf("failure reading header %s (%i/%i\n", items[i], i, items_num); + exit(-1); + } + } + } + eet_close(ef); + t2 = get_time(); + printf("1 open/close: %i img headers + data in %3.3f sec (%3.3f img/sec)\n", + items_num, + t2 - t1, + (double)items_num / (t2 - t1)); + t1 = get_time(); + for (i = 0; i < items_num; i++) + { + int w, h, alpha, compress, quality, lossy; + void *data; + + ef = eet_open(file, EET_FILE_MODE_READ); + if (ef) + { + if (eet_data_image_header_read(ef, items[i], &w, &h, &alpha, &compress, &quality, &lossy)) + { + data = eet_data_image_read(ef, items[i], &w, &h, &alpha, &compress, &quality, &lossy); + if (data) free(data); + else + { + printf("failure reading %s (%i/%i\n", items[i], i, items_num); + exit(-1); + } + } + else + { + printf("failure reading header %s (%i/%i\n", items[i], i, items_num); + exit(-1); + } + eet_close(ef); + } + } + t2 = get_time(); + printf("many open/close: %i img headers + data in %3.3f sec (%3.3f img/sec)\n", + items_num, + t2 - t1, + (double)items_num / (t2 - t1)); + return 0; +} |