summaryrefslogtreecommitdiffstats
path: root/base/threading
diff options
context:
space:
mode:
authorepenner@chromium.org <epenner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-25 08:28:22 +0000
committerepenner@chromium.org <epenner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-25 08:28:22 +0000
commitc97e2d4f770300e1c72a363ebbd8982556bc26d7 (patch)
tree7744d2da909f7ceb6cadb0bbb21bb830aabc0454 /base/threading
parentd7439c1add7051021165a46625b3baa6476cef13 (diff)
downloadchromium_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.cc26
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>