Skip to content

Commit

Permalink
Update SingleThreadNoPostTaskPingPong
Browse files Browse the repository at this point in the history
Benchmark passing of value types as well.
This will allow to measure the difference between passing by reference
in current implementation of Callback::Run and passing by value in a
follow-up patch.

Bug: 
Change-Id: I1e5a3f98f950bd3f28cf6a652ee2345e27decffb
Reviewed-on: https://chromium-review.googlesource.com/732306
Reviewed-by: Ken Rockot <rockot@chromium.org>
Commit-Queue: Vladislav Kuzkokov <vkuzkokov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512166}
  • Loading branch information
Vladislav Kuzkokov authored and Commit Bot committed Oct 27, 2017
1 parent 0d8c27e commit 651c81f
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions ipc/ipc_mojo_perftest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -765,18 +765,18 @@ class CallbackPerfTest : public testing::Test {
void RunSingleThreadNoPostTaskPingPongServer() {
LockThreadAffinity thread_locker(kSharedCore);
std::vector<PingPongTestParams> params = GetDefaultTestParams();
base::Callback<void(const std::string&,
const base::Callback<void(const std::string&)>&)>
base::Callback<void(const std::string&, int,
const base::Callback<void(const std::string&, int)>&)>
ping = base::Bind(&CallbackPerfTest::SingleThreadPingNoPostTask,
base::Unretained(this));
for (size_t i = 0; i < params.size(); i++) {
payload_ = std::string(params[i].message_size(), 'a');
std::string test_name =
base::StringPrintf("Callback_SingleThreadPostTask_Perf_%dx_%zu",
base::StringPrintf("Callback_SingleThreadNoPostTask_Perf_%dx_%zu",
params[i].message_count(), payload_.size());
perf_logger_.reset(new base::PerfTimeLogger(test_name.c_str()));
for (int j = 0; j < params[i].message_count(); ++j) {
ping.Run(payload_,
ping.Run(payload_, j,
base::Bind(&CallbackPerfTest::SingleThreadPongNoPostTask,
base::Unretained(this)));
}
Expand All @@ -786,11 +786,12 @@ class CallbackPerfTest : public testing::Test {

void SingleThreadPingNoPostTask(
const std::string& value,
const base::Callback<void(const std::string&)>& pong) {
pong.Run(value);
int i,
const base::Callback<void(const std::string&, int)>& pong) {
pong.Run(value, i);
}

void SingleThreadPongNoPostTask(const std::string& value) {}
void SingleThreadPongNoPostTask(const std::string& value, int i) {}

void RunSingleThreadPostTaskPingPongServer() {
LockThreadAffinity thread_locker(kSharedCore);
Expand All @@ -817,7 +818,7 @@ class CallbackPerfTest : public testing::Test {
if (value == "hello") {
DCHECK(!perf_logger_.get());
std::string test_name =
base::StringPrintf("Callback_SingleThreadNoPostTask_Perf_%dx_%zu",
base::StringPrintf("Callback_SingleThreadPostTask_Perf_%dx_%zu",
message_count_, payload_.size());
perf_logger_.reset(new base::PerfTimeLogger(test_name.c_str()));
} else {
Expand Down

0 comments on commit 651c81f

Please sign in to comment.