Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(393)

Unified Diff: cc/resources/task_graph_runner_perftest.cc

Issue 1144693002: cc: Move files out of cc/resources/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: resources: android Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/resources/task_graph_runner.cc ('k') | cc/resources/task_graph_runner_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/task_graph_runner_perftest.cc
diff --git a/cc/resources/task_graph_runner_perftest.cc b/cc/resources/task_graph_runner_perftest.cc
deleted file mode 100644
index cbd5c5cfc6cacaf77ab36ae23efea597094853ae..0000000000000000000000000000000000000000
--- a/cc/resources/task_graph_runner_perftest.cc
+++ /dev/null
@@ -1,312 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cc/resources/task_graph_runner.h"
-
-#include <vector>
-
-#include "base/memory/scoped_ptr.h"
-#include "base/time/time.h"
-#include "cc/base/completion_event.h"
-#include "cc/debug/lap_timer.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "testing/perf/perf_test.h"
-
-namespace cc {
-namespace {
-
-static const int kTimeLimitMillis = 2000;
-static const int kWarmupRuns = 5;
-static const int kTimeCheckInterval = 10;
-
-class PerfTaskImpl : public Task {
- public:
- typedef std::vector<scoped_refptr<PerfTaskImpl>> Vector;
-
- PerfTaskImpl() {}
-
- // Overridden from Task:
- void RunOnWorkerThread() override {}
-
- void Reset() { did_run_ = false; }
-
- private:
- ~PerfTaskImpl() override {}
-
- DISALLOW_COPY_AND_ASSIGN(PerfTaskImpl);
-};
-
-class TaskGraphRunnerPerfTest : public testing::Test {
- public:
- TaskGraphRunnerPerfTest()
- : timer_(kWarmupRuns,
- base::TimeDelta::FromMilliseconds(kTimeLimitMillis),
- kTimeCheckInterval) {}
-
- // Overridden from testing::Test:
- void SetUp() override {
- task_graph_runner_ = make_scoped_ptr(new TaskGraphRunner);
- namespace_token_ = task_graph_runner_->GetNamespaceToken();
- }
- void TearDown() override { task_graph_runner_ = nullptr; }
-
- void RunBuildTaskGraphTest(const std::string& test_name,
- int num_top_level_tasks,
- int num_tasks,
- int num_leaf_tasks) {
- PerfTaskImpl::Vector top_level_tasks;
- PerfTaskImpl::Vector tasks;
- PerfTaskImpl::Vector leaf_tasks;
- CreateTasks(num_top_level_tasks, &top_level_tasks);
- CreateTasks(num_tasks, &tasks);
- CreateTasks(num_leaf_tasks, &leaf_tasks);
-
- // Avoid unnecessary heap allocations by reusing the same graph.
- TaskGraph graph;
-
- timer_.Reset();
- do {
- graph.Reset();
- BuildTaskGraph(top_level_tasks, tasks, leaf_tasks, &graph);
- timer_.NextLap();
- } while (!timer_.HasTimeLimitExpired());
-
- perf_test::PrintResult("build_task_graph",
- TestModifierString(),
- test_name,
- timer_.LapsPerSecond(),
- "runs/s",
- true);
- }
-
- void RunScheduleTasksTest(const std::string& test_name,
- int num_top_level_tasks,
- int num_tasks,
- int num_leaf_tasks) {
- PerfTaskImpl::Vector top_level_tasks;
- PerfTaskImpl::Vector tasks;
- PerfTaskImpl::Vector leaf_tasks;
- CreateTasks(num_top_level_tasks, &top_level_tasks);
- CreateTasks(num_tasks, &tasks);
- CreateTasks(num_leaf_tasks, &leaf_tasks);
-
- // Avoid unnecessary heap allocations by reusing the same graph and
- // completed tasks vector.
- TaskGraph graph;
- Task::Vector completed_tasks;
-
- timer_.Reset();
- do {
- graph.Reset();
- BuildTaskGraph(top_level_tasks, tasks, leaf_tasks, &graph);
- task_graph_runner_->ScheduleTasks(namespace_token_, &graph);
- // Shouldn't be any tasks to collect as we reschedule the same set
- // of tasks.
- DCHECK_EQ(0u, CollectCompletedTasks(&completed_tasks));
- timer_.NextLap();
- } while (!timer_.HasTimeLimitExpired());
-
- TaskGraph empty;
- task_graph_runner_->ScheduleTasks(namespace_token_, &empty);
- CollectCompletedTasks(&completed_tasks);
-
- perf_test::PrintResult("schedule_tasks",
- TestModifierString(),
- test_name,
- timer_.LapsPerSecond(),
- "runs/s",
- true);
- }
-
- void RunScheduleAlternateTasksTest(const std::string& test_name,
- int num_top_level_tasks,
- int num_tasks,
- int num_leaf_tasks) {
- const size_t kNumVersions = 2;
- PerfTaskImpl::Vector top_level_tasks[kNumVersions];
- PerfTaskImpl::Vector tasks[kNumVersions];
- PerfTaskImpl::Vector leaf_tasks[kNumVersions];
- for (size_t i = 0; i < kNumVersions; ++i) {
- CreateTasks(num_top_level_tasks, &top_level_tasks[i]);
- CreateTasks(num_tasks, &tasks[i]);
- CreateTasks(num_leaf_tasks, &leaf_tasks[i]);
- }
-
- // Avoid unnecessary heap allocations by reusing the same graph and
- // completed tasks vector.
- TaskGraph graph;
- Task::Vector completed_tasks;
-
- size_t count = 0;
- timer_.Reset();
- do {
- graph.Reset();
- BuildTaskGraph(top_level_tasks[count % kNumVersions],
- tasks[count % kNumVersions],
- leaf_tasks[count % kNumVersions],
- &graph);
- task_graph_runner_->ScheduleTasks(namespace_token_, &graph);
- CollectCompletedTasks(&completed_tasks);
- completed_tasks.clear();
- ++count;
- timer_.NextLap();
- } while (!timer_.HasTimeLimitExpired());
-
- TaskGraph empty;
- task_graph_runner_->ScheduleTasks(namespace_token_, &empty);
- CollectCompletedTasks(&completed_tasks);
-
- perf_test::PrintResult("schedule_alternate_tasks",
- TestModifierString(),
- test_name,
- timer_.LapsPerSecond(),
- "runs/s",
- true);
- }
-
- void RunScheduleAndExecuteTasksTest(const std::string& test_name,
- int num_top_level_tasks,
- int num_tasks,
- int num_leaf_tasks) {
- PerfTaskImpl::Vector top_level_tasks;
- PerfTaskImpl::Vector tasks;
- PerfTaskImpl::Vector leaf_tasks;
- CreateTasks(num_top_level_tasks, &top_level_tasks);
- CreateTasks(num_tasks, &tasks);
- CreateTasks(num_leaf_tasks, &leaf_tasks);
-
- // Avoid unnecessary heap allocations by reusing the same graph and
- // completed tasks vector.
- TaskGraph graph;
- Task::Vector completed_tasks;
-
- timer_.Reset();
- do {
- graph.Reset();
- BuildTaskGraph(top_level_tasks, tasks, leaf_tasks, &graph);
- task_graph_runner_->ScheduleTasks(namespace_token_, &graph);
- task_graph_runner_->RunUntilIdle();
- CollectCompletedTasks(&completed_tasks);
- completed_tasks.clear();
- ResetTasks(&top_level_tasks);
- ResetTasks(&tasks);
- ResetTasks(&leaf_tasks);
- timer_.NextLap();
- } while (!timer_.HasTimeLimitExpired());
-
- perf_test::PrintResult("execute_tasks",
- TestModifierString(),
- test_name,
- timer_.LapsPerSecond(),
- "runs/s",
- true);
- }
-
- private:
- static std::string TestModifierString() {
- return std::string("_task_graph_runner");
- }
-
- void CreateTasks(int num_tasks, PerfTaskImpl::Vector* tasks) {
- for (int i = 0; i < num_tasks; ++i)
- tasks->push_back(make_scoped_refptr(new PerfTaskImpl));
- }
-
- void ResetTasks(PerfTaskImpl::Vector* tasks) {
- for (PerfTaskImpl::Vector::iterator it = tasks->begin(); it != tasks->end();
- ++it) {
- PerfTaskImpl* task = it->get();
- task->Reset();
- }
- }
-
- void BuildTaskGraph(const PerfTaskImpl::Vector& top_level_tasks,
- const PerfTaskImpl::Vector& tasks,
- const PerfTaskImpl::Vector& leaf_tasks,
- TaskGraph* graph) {
- DCHECK(graph->nodes.empty());
- DCHECK(graph->edges.empty());
-
- for (PerfTaskImpl::Vector::const_iterator it = leaf_tasks.begin();
- it != leaf_tasks.end();
- ++it) {
- graph->nodes.push_back(TaskGraph::Node(it->get(), 0u, 0u));
- }
-
- for (PerfTaskImpl::Vector::const_iterator it = tasks.begin();
- it != tasks.end();
- ++it) {
- graph->nodes.push_back(TaskGraph::Node(it->get(), 0u, leaf_tasks.size()));
-
- for (PerfTaskImpl::Vector::const_iterator leaf_it = leaf_tasks.begin();
- leaf_it != leaf_tasks.end();
- ++leaf_it) {
- graph->edges.push_back(TaskGraph::Edge(leaf_it->get(), it->get()));
- }
-
- for (PerfTaskImpl::Vector::const_iterator top_level_it =
- top_level_tasks.begin();
- top_level_it != top_level_tasks.end();
- ++top_level_it) {
- graph->edges.push_back(TaskGraph::Edge(it->get(), top_level_it->get()));
- }
- }
-
- for (PerfTaskImpl::Vector::const_iterator it = top_level_tasks.begin();
- it != top_level_tasks.end();
- ++it) {
- graph->nodes.push_back(TaskGraph::Node(it->get(), 0u, tasks.size()));
- }
- }
-
- size_t CollectCompletedTasks(Task::Vector* completed_tasks) {
- DCHECK(completed_tasks->empty());
- task_graph_runner_->CollectCompletedTasks(namespace_token_,
- completed_tasks);
- return completed_tasks->size();
- }
-
- scoped_ptr<TaskGraphRunner> task_graph_runner_;
- NamespaceToken namespace_token_;
- LapTimer timer_;
-};
-
-TEST_F(TaskGraphRunnerPerfTest, BuildTaskGraph) {
- RunBuildTaskGraphTest("0_1_0", 0, 1, 0);
- RunBuildTaskGraphTest("0_32_0", 0, 32, 0);
- RunBuildTaskGraphTest("2_1_0", 2, 1, 0);
- RunBuildTaskGraphTest("2_32_0", 2, 32, 0);
- RunBuildTaskGraphTest("2_1_1", 2, 1, 1);
- RunBuildTaskGraphTest("2_32_1", 2, 32, 1);
-}
-
-TEST_F(TaskGraphRunnerPerfTest, ScheduleTasks) {
- RunScheduleTasksTest("0_1_0", 0, 1, 0);
- RunScheduleTasksTest("0_32_0", 0, 32, 0);
- RunScheduleTasksTest("2_1_0", 2, 1, 0);
- RunScheduleTasksTest("2_32_0", 2, 32, 0);
- RunScheduleTasksTest("2_1_1", 2, 1, 1);
- RunScheduleTasksTest("2_32_1", 2, 32, 1);
-}
-
-TEST_F(TaskGraphRunnerPerfTest, ScheduleAlternateTasks) {
- RunScheduleAlternateTasksTest("0_1_0", 0, 1, 0);
- RunScheduleAlternateTasksTest("0_32_0", 0, 32, 0);
- RunScheduleAlternateTasksTest("2_1_0", 2, 1, 0);
- RunScheduleAlternateTasksTest("2_32_0", 2, 32, 0);
- RunScheduleAlternateTasksTest("2_1_1", 2, 1, 1);
- RunScheduleAlternateTasksTest("2_32_1", 2, 32, 1);
-}
-
-TEST_F(TaskGraphRunnerPerfTest, ScheduleAndExecuteTasks) {
- RunScheduleAndExecuteTasksTest("0_1_0", 0, 1, 0);
- RunScheduleAndExecuteTasksTest("0_32_0", 0, 32, 0);
- RunScheduleAndExecuteTasksTest("2_1_0", 2, 1, 0);
- RunScheduleAndExecuteTasksTest("2_32_0", 2, 32, 0);
- RunScheduleAndExecuteTasksTest("2_1_1", 2, 1, 1);
- RunScheduleAndExecuteTasksTest("2_32_1", 2, 32, 1);
-}
-
-} // namespace
-} // namespace cc
« no previous file with comments | « cc/resources/task_graph_runner.cc ('k') | cc/resources/task_graph_runner_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698