From fbe44ec0436a8ce735f4dbe06c5109e3c0d4a8ae Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 9 Nov 2012 14:59:21 -0800 Subject: [PATCH] Add a memmove(3) benchmark. Change-Id: I9c0ffae0b5aae29521b7e68e5ce2318b5a401cba --- tests/string_benchmark.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/string_benchmark.cpp b/tests/string_benchmark.cpp index cbb9771ef..7ac8e98c9 100644 --- a/tests/string_benchmark.cpp +++ b/tests/string_benchmark.cpp @@ -62,6 +62,22 @@ static void BM_memcpy(int iters, int nbytes) { } BENCHMARK(BM_memcpy)->AT_COMMON_SIZES; +static void BM_memmove(int iters, int nbytes) { + StopBenchmarkTiming(); + char* buf = new char[nbytes + 64]; + memset(buf, 'x', nbytes + 64); + StartBenchmarkTiming(); + + for (int i = 0; i < iters; i++) { + memmove(buf, buf + 1, nbytes); // Worst-case overlap. + } + + StopBenchmarkTiming(); + SetBenchmarkBytesProcessed(int64_t(iters) * int64_t(nbytes)); + delete[] buf; +} +BENCHMARK(BM_memmove)->AT_COMMON_SIZES; + static void BM_memset(int iters, int nbytes) { StopBenchmarkTiming(); char* dst = new char[nbytes];