]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tests, common: introduce bufferlist::apennd benchmark. 24131/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 7 Sep 2018 21:20:02 +0000 (23:20 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 17 Sep 2018 14:19:13 +0000 (16:19 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/test/bufferlist.cc

index e1d51df8278d9c14719f2325b38abaed47fde1fa..baca6a469f1b5209a11fdd35619a46259e43f763 100644 (file)
@@ -872,7 +872,7 @@ TEST(BufferPtr, append_bench) {
       bufferptr bp(buflen);
       bp.set_length(0);
       for (int64_t j=0; j<buflen; j += s) {
-       bp.append(src, s);
+       bp.append(src + j, s);
       }
     }
     utime_t end = ceph_clock_now();
@@ -1498,6 +1498,48 @@ TEST(BufferList, BenchAlloc) {
   bench_bufferlist_alloc(4, 100000, 16);
 }
 
+TEST(BufferList, append_bench_with_size_hint) {
+  std::array<char, 1048576> src = { 0, };
+
+  for (size_t step = 4; step <= 16384; step *= 4) {
+    const utime_t start = ceph_clock_now();
+
+    constexpr size_t rounds = 4000;
+    for (size_t r = 0; r < rounds; ++r) {
+      ceph::bufferlist bl(std::size(src));
+      for (auto iter = std::begin(src);
+          iter != std::end(src);
+          iter = std::next(iter, step)) {
+       bl.append(&*iter, step);
+      }
+    }
+    cout << rounds << " fills of buffer len " << src.size()
+        << " with " << step << " byte appends in "
+        << (ceph_clock_now() - start) << std::endl;
+  }
+}
+
+TEST(BufferList, append_bench) {
+  std::array<char, 1048576> src = { 0, };
+
+  for (size_t step = 4; step <= 16384; step *= 4) {
+    const utime_t start = ceph_clock_now();
+
+    constexpr size_t rounds = 4000;
+    for (size_t r = 0; r < rounds; ++r) {
+      ceph::bufferlist bl;
+      for (auto iter = std::begin(src);
+          iter != std::end(src);
+          iter = std::next(iter, step)) {
+       bl.append(&*iter, step);
+      }
+    }
+    cout << rounds << " fills of buffer len " << src.size()
+        << " with " << step << " byte appends in "
+        << (ceph_clock_now() - start) << std::endl;
+  }
+}
+
 TEST(BufferList, operator_equal) {
   //
   // list& operator= (const list& other)