From: Radoslaw Zarzynski Date: Thu, 6 Sep 2018 21:50:18 +0000 (+0200) Subject: test, common: add BufferListIterator.BenchDeref benchmark. X-Git-Tag: v14.0.1~55^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=47b8d587d0a742af16e4d2726b23df95b47be639;p=ceph.git test, common: add BufferListIterator.BenchDeref benchmark. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/test/bufferlist.cc b/src/test/bufferlist.cc index 4e8a21f00fbf..e1d51df8278d 100644 --- a/src/test/bufferlist.cc +++ b/src/test/bufferlist.cc @@ -1050,6 +1050,39 @@ TEST(BufferListIterator, end) { } } +static void bench_bufferlistiter_deref(const size_t step, + const size_t bufsize, + const size_t bufnum) { + const std::string buf('a', bufsize); + ceph::bufferlist bl; + + for (size_t i = 0; i < bufnum; i++) { + bl.append(ceph::bufferptr(buf.c_str(), buf.size())); + } + + utime_t start = ceph_clock_now(); + bufferlist::iterator iter = bl.begin(); + while (iter != bl.end()) { + iter.advance(step); + } + utime_t end = ceph_clock_now(); + cout << bufsize * bufnum << " derefs over bl with " << bufnum + << " buffers, each " << bufsize << " bytes long" + << " in " << (end - start) << std::endl; +} + +TEST(BufferListIterator, BenchDeref) { + bench_bufferlistiter_deref(1, 1, 4096000); + bench_bufferlistiter_deref(1, 10, 409600); + bench_bufferlistiter_deref(1, 100, 40960); + bench_bufferlistiter_deref(1, 1000, 4096); + + bench_bufferlistiter_deref(4, 1, 1024000); + bench_bufferlistiter_deref(4, 10, 102400); + bench_bufferlistiter_deref(4, 100, 10240); + bench_bufferlistiter_deref(4, 1000, 1024); +} + TEST(BufferListIterator, advance) { bufferlist bl; const std::string one("ABC");