summaryrefslogtreecommitdiff
path: root/genqrcode/tests/prof_qrencode.c
diff options
context:
space:
mode:
Diffstat (limited to 'genqrcode/tests/prof_qrencode.c')
-rw-r--r--genqrcode/tests/prof_qrencode.c102
1 files changed, 102 insertions, 0 deletions
diff --git a/genqrcode/tests/prof_qrencode.c b/genqrcode/tests/prof_qrencode.c
new file mode 100644
index 0000000000..8aa9a98b95
--- /dev/null
+++ b/genqrcode/tests/prof_qrencode.c
@@ -0,0 +1,102 @@
+#include <stdio.h>
+#include <stdlib.h>
+#if HAVE_CONFIG_H
+#include "../config.h"
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#include <errno.h>
+#include "../qrencode.h"
+
+#ifdef _MSC_VER
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+static LARGE_INTEGER startTime;
+static LARGE_INTEGER frequency = { .QuadPart = 0 };
+#else
+static struct timeval tv;
+#endif
+
+static void timerStart(const char *str)
+{
+ printf("%s: START\n", str);
+#ifdef _MSC_VER
+ (void) QueryPerformanceCounter(&startTime);
+#else
+ gettimeofday(&tv, NULL);
+#endif
+}
+
+static void timerStop(void)
+{
+#ifdef _MSC_VER
+ LARGE_INTEGER endTime, elapsed;
+ (void) QueryPerformanceCounter(&endTime);
+ if (frequency.QuadPart == 0) {
+ (void) QueryPerformanceFrequency(&frequency);
+ }
+
+ elapsed.QuadPart = endTime.QuadPart - startTime.QuadPart;
+ elapsed.QuadPart *= 1000;
+ elapsed.QuadPart /= frequency.QuadPart;
+
+ printf("STOP: %lld msec\n", elapsed.QuadPart);
+#else
+ struct timeval tc;
+
+ gettimeofday(&tc, NULL);
+ printf("STOP: %ld msec\n", (tc.tv_sec - tv.tv_sec) * 1000
+ + (tc.tv_usec - tv.tv_usec) / 1000);
+#endif
+}
+
+static void prof_ver1to10(void)
+{
+ QRcode *code;
+ int i;
+ int version;
+ static const char *data = "This is test.";
+
+ timerStart("Version 1 - 10 (5000 symbols for each)");
+ for(i=0; i<5000; i++) {
+ for(version = 0; version < 11; version++) {
+ code = QRcode_encodeString(data, version, QR_ECLEVEL_L, QR_MODE_8, 0);
+ if(code == NULL) {
+ perror("Failed to encode:");
+ } else {
+ QRcode_free(code);
+ }
+ }
+ }
+ timerStop();
+}
+
+static void prof_ver31to40(void)
+{
+ QRcode *code;
+ int i;
+ int version;
+ static const char *data = "This is test.";
+
+ timerStart("Version 31 - 40 (500 symbols for each)");
+ for(i=0; i<500; i++) {
+ for(version = 31; version < 41; version++) {
+ code = QRcode_encodeString(data, version, QR_ECLEVEL_L, QR_MODE_8, 0);
+ if(code == NULL) {
+ perror("Failed to encode:");
+ } else {
+ QRcode_free(code);
+ }
+ }
+ }
+ timerStop();
+}
+
+int main()
+{
+ prof_ver1to10();
+ prof_ver31to40();
+
+ return 0;
+}