summaryrefslogtreecommitdiffstats
path: root/tools/perf.c
diff options
context:
space:
mode:
authorunknown <unknown@unknown>2009-10-23 04:29:39 +0000
committerunknown <unknown@unknown>2009-10-23 04:29:39 +0000
commitddf5c42f67757000d6ec7686b92a667c2a252dca (patch)
treee070b352fab4b285b7a4ea547d0cbfff9b7fb4d1 /tools/perf.c
downloadiksemel-ddf5c42f67757000d6ec7686b92a667c2a252dca.tar.gz
iksemel-ddf5c42f67757000d6ec7686b92a667c2a252dca.tar.xz
iksemel-ddf5c42f67757000d6ec7686b92a667c2a252dca.zip
Imported from iksemel-1.3.tar.gz.
Diffstat (limited to 'tools/perf.c')
-rw-r--r--tools/perf.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/tools/perf.c b/tools/perf.c
new file mode 100644
index 0000000..ac5a848
--- /dev/null
+++ b/tools/perf.c
@@ -0,0 +1,84 @@
+/* iksemel (XML parser for Jabber)
+** Copyright (C) 2000-2003 Gurer Ozen <madcat@e-kolay.net>
+** This code is free software; you can redistribute it and/or
+** modify it under the terms of GNU Lesser General Public License.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef _WIN32
+#include <windows.h>
+#include <limits.h>
+#else
+#include <sys/time.h>
+#endif
+
+#include "iksemel.h"
+
+/* timing functions */
+
+#ifdef _WIN32
+static DWORD start_tv;
+
+void
+t_reset (void)
+{
+ start_tv = GetTickCount ();
+}
+
+unsigned long
+t_elapsed (void)
+{
+ DWORD end_tv;
+
+ end_tv = GetTickCount ();
+ if (end_tv < start_tv)
+ return UINT_MAX - (start_tv - end_tv - 1);
+ else
+ return end_tv - start_tv;
+}
+
+#else
+static struct timeval start_tv;
+
+void
+t_reset (void)
+{
+ gettimeofday (&start_tv, NULL);
+}
+
+unsigned long
+t_elapsed (void)
+{
+ unsigned long msec;
+ struct timeval cur_tv;
+
+ gettimeofday (&cur_tv, NULL);
+ msec = (cur_tv.tv_sec * 1000) + (cur_tv.tv_usec / 1000);
+ msec -= (start_tv.tv_sec * 1000) + (start_tv.tv_usec / 1000);
+ return msec;
+}
+#endif
+
+/* memory functions */
+
+static void *
+m_malloc (size_t size)
+{
+ void *ptr = malloc (size);
+ printf ("MEM: malloc (%d) => %p\n", size, ptr);
+ return ptr;
+}
+
+static void
+m_free (void *ptr)
+{
+ printf ("MEM: free (%p)\n", ptr);
+}
+
+void
+m_trace (void)
+{
+ iks_set_mem_funcs (m_malloc, m_free);
+}