summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2012-11-09 14:59:21 -0800
committerSteve Kondik <shade@chemlab.org>2013-02-15 10:02:23 -0800
commit29af685e7a54c3196b69911106603c155bc99f83 (patch)
tree3c3213aca29ab2b70c015b508ab6df7f4b9e3735
parent6ca6dbe8ba50a670ad394909cfa2aa0bac6e579b (diff)
downloadbionic-29af685e7a54c3196b69911106603c155bc99f83.zip
bionic-29af685e7a54c3196b69911106603c155bc99f83.tar.gz
bionic-29af685e7a54c3196b69911106603c155bc99f83.tar.bz2
Add a memmove(3) benchmark.
Change-Id: I9c0ffae0b5aae29521b7e68e5ce2318b5a401cba
-rw-r--r--tests/string_benchmark.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/string_benchmark.cpp b/tests/string_benchmark.cpp
index cbb9771..7ac8e98 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];