]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib:talloc: Add talloc_zero vs calloc test
authorAndreas Schneider <asn@samba.org>
Fri, 14 Apr 2023 19:34:59 +0000 (21:34 +0200)
committerMartin Schwenke <martins@samba.org>
Sat, 28 Sep 2024 00:11:34 +0000 (00:11 +0000)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Martin Schwenke <martin@meltin.net>
lib/talloc/testsuite.c

index 8b946535ea51de312da6e2af5ceee1b4711ec8a9..b67897efddf8e7d17d837165d492b80aeaeb4c6a 100644 (file)
@@ -920,6 +920,45 @@ static bool test_speed(void)
        } while (private_timeval_elapsed(&tv) < 5.0);
        fprintf(stderr, "malloc: %.0f ops/sec\n", count/private_timeval_elapsed(&tv));
 
+       printf("\n# TALLOC_ZERO VS CALLOC SPEED\n");
+
+       ctx = talloc_new(NULL);
+
+       tv = private_timeval_current();
+       count = 0;
+       do {
+               void *p1, *p2, *p3;
+               for (i=0;i<loop;i++) {
+                       p1 = talloc_zero_size(ctx, loop % 100);
+                       p2 = talloc_strdup(p1, "foo bar");
+                       p3 = talloc_zero_size(p1, 300);
+                       (void)p2;
+                       (void)p3;
+                       talloc_free(p1);
+               }
+               count += 3 * loop;
+       } while (private_timeval_elapsed(&tv) < 5.0);
+
+       fprintf(stderr, "talloc_zero: %.0f ops/sec\n", count/private_timeval_elapsed(&tv));
+
+       talloc_free(ctx);
+
+       tv = private_timeval_current();
+       count = 0;
+       do {
+               void *p1, *p2, *p3;
+               for (i=0;i<loop;i++) {
+                       p1 = calloc(1, loop % 100);
+                       p2 = strdup("foo bar");
+                       p3 = calloc(1, 300);
+                       free(p1);
+                       free(p2);
+                       free(p3);
+               }
+               count += 3 * loop;
+       } while (private_timeval_elapsed(&tv) < 5.0);
+       fprintf(stderr, "calloc: %.0f ops/sec\n", count/private_timeval_elapsed(&tv));
+
        printf("success: speed\n");
 
        return true;