gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r24500 - gnunet/src/util


From: gnunet
Subject: [GNUnet-SVN] r24500 - gnunet/src/util
Date: Wed, 24 Oct 2012 11:26:44 +0200

Author: grothoff
Date: 2012-10-24 11:26:44 +0200 (Wed, 24 Oct 2012)
New Revision: 24500

Added:
   gnunet/src/util/perf_malloc.c
Modified:
   gnunet/src/util/Makefile.am
   gnunet/src/util/common_allocation.c
Log:
-speeding up baadf00d code by 7x (on i7)

Modified: gnunet/src/util/Makefile.am
===================================================================
--- gnunet/src/util/Makefile.am 2012-10-24 08:56:40 UTC (rev 24499)
+++ gnunet/src/util/Makefile.am 2012-10-24 09:26:44 UTC (rev 24500)
@@ -192,7 +192,8 @@
 
 if HAVE_BENCHMARKS
  BENCHMARKS = \
-  perf_crypto_hash 
+  perf_crypto_hash \
+  perf_malloc
 endif
 
 check_PROGRAMS = \
@@ -499,7 +500,12 @@
 perf_crypto_hash_LDADD = \
  $(top_builddir)/src/util/libgnunetutil.la  
 
+perf_malloc_SOURCES = \
+ perf_malloc.c
+perf_malloc_LDADD = \
+ $(top_builddir)/src/util/libgnunetutil.la  
 
+
 EXTRA_DIST = \
   test_configuration_data.conf \
   test_program_data.conf \

Modified: gnunet/src/util/common_allocation.c
===================================================================
--- gnunet/src/util/common_allocation.c 2012-10-24 08:56:40 UTC (rev 24499)
+++ gnunet/src/util/common_allocation.c 2012-10-24 09:26:44 UTC (rev 24500)
@@ -222,11 +222,14 @@
 #if defined(M_SIZE)
 #if ENABLE_POISONING
   {
+    const uint64_t baadfood = GNUNET_ntohll (0xBAADF00DBAADF00DLL);
+    uint64_t *base = ptr;
+    size_t s = M_SIZE (ptr);  
     size_t i;
-    char baadfood[5] = BAADFOOD_STR;
-    size_t s = M_SIZE (ptr);
-    for (i = 0; i < s; i++)
-      ((char *) ptr)[i] = baadfood[i % 4];
+    
+    for (i=0;i<s/8;i++)
+      base[i] = baadfood;
+    memcpy (&base[s/8], &baadfood, s % 8);
   }
 #endif
 #endif

Added: gnunet/src/util/perf_malloc.c
===================================================================
--- gnunet/src/util/perf_malloc.c                               (rev 0)
+++ gnunet/src/util/perf_malloc.c       2012-10-24 09:26:44 UTC (rev 24500)
@@ -0,0 +1,66 @@
+/*
+     This file is part of GNUnet.
+     (C) 2012 Christian Grothoff (and other contributing authors)
+
+     GNUnet 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 2, or (at your
+     option) any later version.
+
+     GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @author Christian Grothoff
+ * @file util/perf_malloc.c
+ * @brief measure performance of allocation functions
+ */
+#include "platform.h"
+#include "gnunet_common.h"
+#include "gnunet_crypto_lib.h"
+#include "gnunet_time_lib.h"
+#include <gauger.h>
+
+static uint64_t 
+perfMalloc ()
+{
+  size_t i;
+  uint64_t ret;
+
+  ret = 0;
+  for (i=1;i<1024 * 1024;i+=1024)
+    {
+      ret += i;
+      GNUNET_free (GNUNET_malloc (i));
+    }
+  return ret;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  struct GNUNET_TIME_Absolute start;
+  uint64_t kb;
+
+  start = GNUNET_TIME_absolute_get ();
+  kb = perfMalloc ();
+  printf ("Malloc perf took %llu ms\n",
+          (unsigned long long)
+          GNUNET_TIME_absolute_get_duration (start).rel_value);
+  GAUGER ("UTIL", "Allocation",
+          kb / 1024 / (1 +
+                              GNUNET_TIME_absolute_get_duration
+                              (start).rel_value), "kb/s");
+  return 0;
+}
+
+/* end of perf_malloc.c */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]