diff --git a/sw/device/lib/base/memory_perftest.c b/sw/device/lib/base/memory_perftest.c
index 65ea1cb..2004393 100644
--- a/sw/device/lib/base/memory_perftest.c
+++ b/sw/device/lib/base/memory_perftest.c
@@ -13,7 +13,10 @@
 #include "sw/device/lib/testing/test_framework/check.h"
 #include "sw/device/lib/testing/test_framework/ottf_main.h"
 
-#define PERFTEST_BUF_LEN 1000
+enum {
+  kBufLen = 1000,
+  kNumRuns = 10,
+};
 
 typedef struct perf_test {
   // A human-readable name for this particular test, e.g. "memcpy".
@@ -27,7 +30,7 @@
   // A function that exercises the function under test, e.g. memcpy. This
   // function pointer must not be NULL. The runtime of this function will be
   // measured.
-  void (*func)(uint8_t *buf1, uint8_t *buf2, size_t len);
+  void (*func)(uint8_t *buf1, uint8_t *buf2, size_t num_runs);
 
   // The expected number of CPU cycles that `func` will take to run.
   size_t expected_num_cycles;
@@ -35,19 +38,18 @@
 
 // Run the given `perf_test_t` and return the number of cycles it took.
 static inline uint64_t perf_test_run(const perf_test_t *test, uint8_t *buf1,
-                                     uint8_t *buf2, size_t len) {
+                                     uint8_t *buf2, size_t num_runs) {
   CHECK(test->setup_buf1 != NULL);
   CHECK(test->setup_buf2 != NULL);
   CHECK(test->func != NULL);
 
   uint64_t total_clock_cycles = 0;
-  for (size_t i = 0; i <= len; ++i) {
-    // Set up each buffer from [0..i].
-    test->setup_buf1(buf1, i);
-    test->setup_buf2(buf2, i);
+  for (size_t i = 0; i < num_runs; ++i) {
+    test->setup_buf1(buf1, kBufLen);
+    test->setup_buf2(buf2, kBufLen);
 
     uint64_t start_cycles = ibex_mcycle_read();
-    test->func(buf1, buf2, i);
+    test->func(buf1, buf2, kBufLen);
     uint64_t end_cycles = ibex_mcycle_read();
 
     // Even if the 64-bit cycle counter overflowed while running the test, the
@@ -141,68 +143,87 @@
 // If you observe the cycle count is smaller the hardcoded expectation, that's
 // probably a good thing; please update the expectation!
 static const perf_test_t kPerfTests[] = {
-    {.label = "memcpy",
-     .setup_buf1 = &fill_buf_deterministic_values,
-     .setup_buf2 = &fill_buf_deterministic_values,
-     .func = &test_memcpy,
-     .expected_num_cycles = 10538542},
-    {.label = "memcpy_zeroes",
-     .setup_buf1 = &fill_buf_deterministic_values,
-     .setup_buf2 = &fill_buf_zeroes,
-     .func = &test_memcpy,
-     .expected_num_cycles = 10538542},
-    {.label = "memset",
-     .setup_buf1 = &fill_buf_zeroes,
-     .setup_buf2 = &fill_buf_deterministic_values,
-     .func = &test_memset,
-     .expected_num_cycles = 6537542},
-    {.label = "memset_zeroes",
-     .setup_buf1 = &fill_buf_zeroes,
-     .setup_buf2 = &fill_buf_zeroes,
-     .func = &test_memset,
-     .expected_num_cycles = 6537542},
-    {.label = "memcmp_pathological",
-     .setup_buf1 = &fill_buf_zeroes_then_one,
-     .setup_buf2 = &fill_buf_zeroes,
-     .func = &test_memcmp,
-     .expected_num_cycles = 10541545},
-    {.label = "memcmp_zeroes",
-     .setup_buf1 = &fill_buf_zeroes,
-     .setup_buf2 = &fill_buf_zeroes,
-     .func = &test_memcmp,
-     .expected_num_cycles = 10538545},
-    {.label = "memrcmp_pathological",
-     .setup_buf1 = &fill_buf_zeroes,
-     .setup_buf2 = &fill_buf_one_then_zeroes,
-     .func = &test_memrcmp,
-     .expected_num_cycles = 10043043},
-    {.label = "memrcmp_zeroes",
-     .setup_buf1 = &fill_buf_zeroes,
-     .setup_buf2 = &fill_buf_zeroes,
-     .func = &test_memrcmp,
-     .expected_num_cycles = 10040043},
-    {.label = "memchr_pathological",
-     .setup_buf1 = &fill_buf_deterministic_values,
-     .setup_buf2 = &fill_buf_zeroes,
-     .func = &test_memchr,
-     .expected_num_cycles = 2399078},
-    {.label = "memrchr_pathological",
-     .setup_buf1 = &fill_buf_deterministic_values,
-     .setup_buf2 = &fill_buf_deterministic_values,
-     .func = &test_memrchr,
-     .expected_num_cycles = 2158742},
+    {
+        .label = "memcpy",
+        .setup_buf1 = &fill_buf_deterministic_values,
+        .setup_buf2 = &fill_buf_deterministic_values,
+        .func = &test_memcpy,
+        .expected_num_cycles = 190290,
+    },
+    {
+        .label = "memcpy_zeroes",
+        .setup_buf1 = &fill_buf_deterministic_values,
+        .setup_buf2 = &fill_buf_zeroes,
+        .func = &test_memcpy,
+        .expected_num_cycles = 190290,
+    },
+    {
+        .label = "memset",
+        .setup_buf1 = &fill_buf_zeroes,
+        .setup_buf2 = &fill_buf_deterministic_values,
+        .func = &test_memset,
+        .expected_num_cycles = 140310,
+    },
+    {
+        .label = "memset_zeroes",
+        .setup_buf1 = &fill_buf_zeroes,
+        .setup_buf2 = &fill_buf_zeroes,
+        .func = &test_memset,
+        .expected_num_cycles = 140310,
+    },
+    {
+        .label = "memcmp_pathological",
+        .setup_buf1 = &fill_buf_zeroes_then_one,
+        .setup_buf2 = &fill_buf_zeroes,
+        .func = &test_memcmp,
+        .expected_num_cycles = 190340,
+    },
+    {
+        .label = "memcmp_zeroes",
+        .setup_buf1 = &fill_buf_zeroes,
+        .setup_buf2 = &fill_buf_zeroes,
+        .func = &test_memcmp,
+        .expected_num_cycles = 190320,
+    },
+    {
+        .label = "memrcmp_pathological",
+        .setup_buf1 = &fill_buf_zeroes,
+        .setup_buf2 = &fill_buf_one_then_zeroes,
+        .func = &test_memrcmp,
+        .expected_num_cycles = 220320,
+    },
+    {
+        .label = "memrcmp_zeroes",
+        .setup_buf1 = &fill_buf_zeroes,
+        .setup_buf2 = &fill_buf_zeroes,
+        .func = &test_memrcmp,
+        .expected_num_cycles = 220280,
+    },
+    {
+        .label = "memchr_pathological",
+        .setup_buf1 = &fill_buf_deterministic_values,
+        .setup_buf2 = &fill_buf_zeroes,
+        .func = &test_memchr,
+        .expected_num_cycles = 11940,
+    },
+    {
+        .label = "memrchr_pathological",
+        .setup_buf1 = &fill_buf_deterministic_values,
+        .setup_buf2 = &fill_buf_deterministic_values,
+        .func = &test_memrchr,
+        .expected_num_cycles = 44940,
+    },
 };
 
-static uint8_t buf1[PERFTEST_BUF_LEN];
-static uint8_t buf2[PERFTEST_BUF_LEN];
+static uint8_t buf1[kBufLen];
+static uint8_t buf2[kBufLen];
 
 bool test_main(void) {
   bool all_expectations_match = true;
   for (size_t i = 0; i < ARRAYSIZE(kPerfTests); ++i) {
     const perf_test_t *test = &kPerfTests[i];
 
-    const uint64_t num_cycles =
-        perf_test_run(test, buf1, buf2, PERFTEST_BUF_LEN);
+    const uint64_t num_cycles = perf_test_run(test, buf1, buf2, kNumRuns);
     if (num_cycles != test->expected_num_cycles) {
       all_expectations_match = false;
       // Cast cycle counts to `uint32_t` before printing because `base_printf()`
