diff options
author | epenner@chromium.org <epenner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-25 08:28:22 +0000 |
---|---|---|
committer | epenner@chromium.org <epenner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-25 08:28:22 +0000 |
commit | c97e2d4f770300e1c72a363ebbd8982556bc26d7 (patch) | |
tree | 7744d2da909f7ceb6cadb0bbb21bb830aabc0454 /base/threading | |
parent | d7439c1add7051021165a46625b3baa6476cef13 (diff) | |
download | chromium_src-c97e2d4f770300e1c72a363ebbd8982556bc26d7.zip chromium_src-c97e2d4f770300e1c72a363ebbd8982556bc26d7.tar.gz chromium_src-c97e2d4f770300e1c72a363ebbd8982556bc26d7.tar.bz2 |
base: Test the cost of adding observers on message loops.
Adds about ~5us per task on Nexus 4.
BUG=None
Review URL: https://codereview.chromium.org/254423003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@266155 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/threading')
-rw-r--r-- | base/threading/thread_perftest.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/base/threading/thread_perftest.cc b/base/threading/thread_perftest.cc index 840a033..eaeddf9 100644 --- a/base/threading/thread_perftest.cc +++ b/base/threading/thread_perftest.cc @@ -144,6 +144,32 @@ TEST_F(TaskPerfTest, TaskPingPong) { RunPingPongTest("4_Task_Threads", 4); } + +// Same as above, but add observers to test their perf impact. +class MessageLoopObserver : public base::MessageLoop::TaskObserver { + public: + virtual void WillProcessTask(const base::PendingTask& pending_task) OVERRIDE { + } + virtual void DidProcessTask(const base::PendingTask& pending_task) OVERRIDE { + } +}; +MessageLoopObserver message_loop_observer; + +class TaskObserverPerfTest : public TaskPerfTest { + public: + virtual void Init() OVERRIDE { + TaskPerfTest::Init(); + for (size_t i = 0; i < threads_.size(); i++) { + threads_[i]->message_loop()->AddTaskObserver(&message_loop_observer); + } + } +}; + +TEST_F(TaskObserverPerfTest, TaskPingPong) { + RunPingPongTest("1_Task_Threads_With_Observer", 1); + RunPingPongTest("4_Task_Threads_With_Observer", 4); +} + // Class to test our WaitableEvent performance by signaling back and fort. // WaitableEvent is templated so we can also compare with other versions. template <typename WaitableEventType> |