aboutsummaryrefslogtreecommitdiff
path: root/utils/bench
diff options
context:
space:
mode:
authorAlexander Shvedov <60114847+a-shvedov@users.noreply.github.com>2024-05-30 10:43:01 +0300
committerGitHub <noreply@github.com>2024-05-30 10:43:01 +0300
commitf8a5f1cd9ea907654f42fa06ce6b6bfd4b8c1b13 (patch)
tree7aec2a095a30ed609ce96f85ec3c4e0a8b8eb74c /utils/bench
parent629edb1e78d791894ce9ee6d53259f95fe1a29af (diff)
parente7d871c8bf64962a658e447b90a1a3b43aaddc28 (diff)
downloadafl++-f8a5f1cd9ea907654f42fa06ce6b6bfd4b8c1b13.tar.gz
Merge branch 'AFLplusplus:stable' into stable
Diffstat (limited to 'utils/bench')
-rw-r--r--utils/bench/Makefile8
-rw-r--r--utils/bench/README.md2
-rw-r--r--utils/bench/hash.c53
3 files changed, 63 insertions, 0 deletions
diff --git a/utils/bench/Makefile b/utils/bench/Makefile
new file mode 100644
index 00000000..e7d2f3a1
--- /dev/null
+++ b/utils/bench/Makefile
@@ -0,0 +1,8 @@
+all: hash
+
+hash: hash.c
+ gcc -O3 -mavx2 -march=native -I../../include -o hash hash.c
+
+clean:
+ rm -f hash
+
diff --git a/utils/bench/README.md b/utils/bench/README.md
new file mode 100644
index 00000000..772c117b
--- /dev/null
+++ b/utils/bench/README.md
@@ -0,0 +1,2 @@
+# Internal AFL++ benchmarking
+
diff --git a/utils/bench/hash.c b/utils/bench/hash.c
new file mode 100644
index 00000000..d4be0ab4
--- /dev/null
+++ b/utils/bench/hash.c
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include <stdint.h>
+#include <time.h>
+
+#define T1HA0_AESNI_AVAILABLE 1
+#define T1HA_USE_FAST_ONESHOT_READ 1
+#define T1HA_USE_INDIRECT_FUNCTIONS 1
+#define T1HA_IA32AES_NAME t1ha0_ia32aes
+#include "t1ha0_ia32aes_b.h"
+
+#define XXH_INLINE_ALL
+#include "xxhash.h"
+#undef XXH_INLINE_ALL
+
+int main() {
+
+ char *data = malloc(4097);
+ struct timespec start, end;
+ long long duration;
+ int i;
+ uint64_t res;
+
+ clock_gettime(CLOCK_MONOTONIC, &start);
+ for (i = 0; i < 100000000; ++i) {
+
+ res = XXH3_64bits(data, 4097);
+ memcpy(data + 16, (char *)&res, 8);
+
+ }
+
+ clock_gettime(CLOCK_MONOTONIC, &end);
+ duration = (end.tv_sec - start.tv_sec) * 1000000000LL +
+ (end.tv_nsec - start.tv_nsec);
+ printf("xxh3 duration: %lld ns\n", duration);
+
+ memset(data, 0, 4097);
+ clock_gettime(CLOCK_MONOTONIC, &start);
+ for (i = 0; i < 100000000; ++i) {
+
+ res = t1ha0_ia32aes(data, 4097);
+ memcpy(data + 16, (char *)&res, 8);
+
+ }
+
+ clock_gettime(CLOCK_MONOTONIC, &end);
+ duration = (end.tv_sec - start.tv_sec) * 1000000000LL +
+ (end.tv_nsec - start.tv_nsec);
+ printf("t1ha0_ia32aes duration: %lld ns\n", duration);
+
+ return 0;
+
+}
+