aboutsummaryrefslogtreecommitdiff
path: root/src/util/perf_malloc.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-12-25 17:00:16 +0100
committerChristian Grothoff <christian@grothoff.org>2019-12-25 17:01:55 +0100
commit1a4bd09e63df2300845fcb9bfa150f28943b9aea (patch)
treeb50d2ac1b5c845e89e53d54015a70edbf2918504 /src/util/perf_malloc.c
parent64d6551e3c6608afcd5dfd5ebdf6ad9bbac0b9f5 (diff)
downloadgnunet-1a4bd09e63df2300845fcb9bfa150f28943b9aea.tar.gz
gnunet-1a4bd09e63df2300845fcb9bfa150f28943b9aea.zip
also BADFOOD on realloc
Diffstat (limited to 'src/util/perf_malloc.c')
-rw-r--r--src/util/perf_malloc.c39
1 files changed, 35 insertions, 4 deletions
diff --git a/src/util/perf_malloc.c b/src/util/perf_malloc.c
index 727e15979..6582505c8 100644
--- a/src/util/perf_malloc.c
+++ b/src/util/perf_malloc.c
@@ -28,13 +28,12 @@
28#include <gauger.h> 28#include <gauger.h>
29 29
30static uint64_t 30static uint64_t
31perfMalloc () 31perf_malloc ()
32{ 32{
33 size_t i;
34 uint64_t ret; 33 uint64_t ret;
35 34
36 ret = 0; 35 ret = 0;
37 for (i = 1; i < 1024 * 1024; i += 1024) 36 for (size_t i = 1; i < 1024 * 1024; i += 1024)
38 { 37 {
39 ret += i; 38 ret += i;
40 GNUNET_free (GNUNET_malloc (i)); 39 GNUNET_free (GNUNET_malloc (i));
@@ -43,6 +42,32 @@ perfMalloc ()
43} 42}
44 43
45 44
45static uint64_t
46perf_realloc ()
47{
48 uint64_t ret;
49
50 ret = 0;
51 for (size_t i = 10; i < 1024 * 1024 / 5; i += 1024)
52 {
53 char *ptr;
54
55 ret += i;
56 ptr = GNUNET_malloc (i);
57 memset (ptr, 1, i);
58 ptr = GNUNET_realloc (ptr, i + 5);
59 for (size_t j=0;j<i;j++)
60 GNUNET_assert (1 == ptr[j]);
61 memset (ptr, 6, i + 5);
62 ptr = GNUNET_realloc (ptr, i - 5);
63 for (size_t j=0;j<i-5;j++)
64 GNUNET_assert (6 == ptr[j]);
65 GNUNET_free (ptr);
66 }
67 return ret;
68}
69
70
46int 71int
47main (int argc, char *argv[]) 72main (int argc, char *argv[])
48{ 73{
@@ -50,7 +75,7 @@ main (int argc, char *argv[])
50 uint64_t kb; 75 uint64_t kb;
51 76
52 start = GNUNET_TIME_absolute_get (); 77 start = GNUNET_TIME_absolute_get ();
53 kb = perfMalloc (); 78 kb = perf_malloc ();
54 printf ("Malloc perf took %s\n", 79 printf ("Malloc perf took %s\n",
55 GNUNET_STRINGS_relative_time_to_string ( 80 GNUNET_STRINGS_relative_time_to_string (
56 GNUNET_TIME_absolute_get_duration (start), 81 GNUNET_TIME_absolute_get_duration (start),
@@ -59,6 +84,12 @@ main (int argc, char *argv[])
59 kb / 1024 / (1 84 kb / 1024 / (1
60 + GNUNET_TIME_absolute_get_duration 85 + GNUNET_TIME_absolute_get_duration
61 (start).rel_value_us / 1000LL), "kb/ms"); 86 (start).rel_value_us / 1000LL), "kb/ms");
87 start = GNUNET_TIME_absolute_get ();
88 kb = perf_realloc ();
89 printf ("Realloc perf took %s\n",
90 GNUNET_STRINGS_relative_time_to_string (
91 GNUNET_TIME_absolute_get_duration (start),
92 GNUNET_YES));
62 return 0; 93 return 0;
63} 94}
64 95