summaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>2005-05-10 13:35:33 +0000
committerCarsten Haitzler <raster@rasterman.com>2005-05-10 13:35:33 +0000
commit0a19215d503ae02b1053ad78ac5c050f608ec632 (patch)
tree6a3d25661c949b1862eed076d622e83099ae50b1 /src/bin
parent48105615daf87b236d90cc1c0b671a82ade13bc6 (diff)
downloadeet-0a19215d503ae02b1053ad78ac5c050f608ec632.tar.gz
slightly faster image load
SVN revision: 14696
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/Makefile.am8
-rw-r--r--src/bin/eet_bench_main.c114
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;
+}