diff options
Diffstat (limited to 'cc/resources/raster_worker_pool_perftest.cc')
-rw-r--r-- | cc/resources/raster_worker_pool_perftest.cc | 86 |
1 files changed, 28 insertions, 58 deletions
diff --git a/cc/resources/raster_worker_pool_perftest.cc b/cc/resources/raster_worker_pool_perftest.cc index 70e667a..c76ec43 100644 --- a/cc/resources/raster_worker_pool_perftest.cc +++ b/cc/resources/raster_worker_pool_perftest.cc @@ -129,41 +129,8 @@ class RasterWorkerPoolPerfTest : public testing::TestWithParam<RasterWorkerPoolType>, public RasterWorkerPoolClient { public: - class Task : public RasterWorkerPool::Task { - public: - typedef std::vector<Task> Vector; - - static Task Create() { return Task(new PerfWorkerPoolTaskImpl); } - - void AppendTo(internal::WorkerPoolTask::Vector* dependencies) const { - dependencies->push_back(internal_); - } - - private: - explicit Task(internal::WorkerPoolTask* task) - : RasterWorkerPool::Task(task) {} - }; - - class RasterTask : public RasterWorkerPool::RasterTask { - public: - typedef std::vector<RasterTask> Vector; - - static RasterTask Create(scoped_ptr<ScopedResource> resource, - const Task::Vector& image_decode_tasks) { - internal::WorkerPoolTask::Vector dependencies; - for (Task::Vector::const_iterator it = image_decode_tasks.begin(); - it != image_decode_tasks.end(); - ++it) - it->AppendTo(&dependencies); - - return RasterTask( - new PerfRasterWorkerPoolTaskImpl(resource.Pass(), &dependencies)); - } - - private: - explicit RasterTask(internal::RasterWorkerPoolTask* task) - : RasterWorkerPool::RasterTask(task) {} - }; + typedef std::vector<scoped_refptr<internal::RasterWorkerPoolTask> > + RasterTaskVector; RasterWorkerPoolPerfTest() : context_provider_(TestContextProvider::Create()), @@ -220,15 +187,17 @@ class RasterWorkerPoolPerfTest base::MessageLoop::current()->Run(); } - void CreateImageDecodeTasks(unsigned num_image_decode_tasks, - Task::Vector* image_decode_tasks) { + void CreateImageDecodeTasks( + unsigned num_image_decode_tasks, + internal::WorkerPoolTask::Vector* image_decode_tasks) { for (unsigned i = 0; i < num_image_decode_tasks; ++i) - image_decode_tasks->push_back(Task::Create()); + image_decode_tasks->push_back(new PerfWorkerPoolTaskImpl); } - void CreateRasterTasks(unsigned num_raster_tasks, - const Task::Vector& image_decode_tasks, - RasterTask::Vector* raster_tasks) { + void CreateRasterTasks( + unsigned num_raster_tasks, + const internal::WorkerPoolTask::Vector& image_decode_tasks, + RasterTaskVector* raster_tasks) { const gfx::Size size(1, 1); for (unsigned i = 0; i < num_raster_tasks; ++i) { @@ -236,29 +205,30 @@ class RasterWorkerPoolPerfTest ScopedResource::Create(resource_provider_.get())); resource->Allocate(size, ResourceProvider::TextureUsageAny, RGBA_8888); + internal::WorkerPoolTask::Vector dependencies = image_decode_tasks; raster_tasks->push_back( - RasterTask::Create(resource.Pass(), image_decode_tasks)); + new PerfRasterWorkerPoolTaskImpl(resource.Pass(), &dependencies)); } } - void BuildTaskQueue(RasterWorkerPool::RasterTask::Queue* tasks, - const RasterTask::Vector& raster_tasks) { - for (RasterTask::Vector::const_iterator it = raster_tasks.begin(); + void BuildTaskQueue(RasterTaskQueue* queue, + const RasterTaskVector& raster_tasks) { + for (RasterTaskVector::const_iterator it = raster_tasks.begin(); it != raster_tasks.end(); ++it) - tasks->Append(*it, false); + queue->items.push_back(RasterTaskQueue::Item(it->get(), false)); } void RunScheduleTasksTest(const std::string& test_name, unsigned num_raster_tasks, unsigned num_image_decode_tasks) { - Task::Vector image_decode_tasks; - RasterTask::Vector raster_tasks; + internal::WorkerPoolTask::Vector image_decode_tasks; + RasterTaskVector raster_tasks; CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks); CreateRasterTasks(num_raster_tasks, image_decode_tasks, &raster_tasks); // Avoid unnecessary heap allocations by reusing the same queue. - RasterWorkerPool::RasterTask::Queue queue; + RasterTaskQueue queue; timer_.Reset(); do { @@ -269,7 +239,7 @@ class RasterWorkerPoolPerfTest timer_.NextLap(); } while (!timer_.HasTimeLimitExpired()); - RasterWorkerPool::RasterTask::Queue empty; + RasterTaskQueue empty; raster_worker_pool_->ScheduleTasks(&empty); RunMessageLoopUntilAllTasksHaveCompleted(); @@ -285,8 +255,8 @@ class RasterWorkerPoolPerfTest unsigned num_raster_tasks, unsigned num_image_decode_tasks) { const size_t kNumVersions = 2; - Task::Vector image_decode_tasks[kNumVersions]; - RasterTask::Vector raster_tasks[kNumVersions]; + internal::WorkerPoolTask::Vector image_decode_tasks[kNumVersions]; + RasterTaskVector raster_tasks[kNumVersions]; for (size_t i = 0; i < kNumVersions; ++i) { CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks[i]); CreateRasterTasks( @@ -294,7 +264,7 @@ class RasterWorkerPoolPerfTest } // Avoid unnecessary heap allocations by reusing the same queue. - RasterWorkerPool::RasterTask::Queue queue; + RasterTaskQueue queue; size_t count = 0; timer_.Reset(); @@ -307,7 +277,7 @@ class RasterWorkerPoolPerfTest timer_.NextLap(); } while (!timer_.HasTimeLimitExpired()); - RasterWorkerPool::RasterTask::Queue empty; + RasterTaskQueue empty; raster_worker_pool_->ScheduleTasks(&empty); RunMessageLoopUntilAllTasksHaveCompleted(); @@ -322,13 +292,13 @@ class RasterWorkerPoolPerfTest void RunScheduleAndExecuteTasksTest(const std::string& test_name, unsigned num_raster_tasks, unsigned num_image_decode_tasks) { - Task::Vector image_decode_tasks; - RasterTask::Vector raster_tasks; + internal::WorkerPoolTask::Vector image_decode_tasks; + RasterTaskVector raster_tasks; CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks); CreateRasterTasks(num_raster_tasks, image_decode_tasks, &raster_tasks); // Avoid unnecessary heap allocations by reusing the same queue. - RasterWorkerPool::RasterTask::Queue queue; + RasterTaskQueue queue; timer_.Reset(); do { @@ -339,7 +309,7 @@ class RasterWorkerPoolPerfTest timer_.NextLap(); } while (!timer_.HasTimeLimitExpired()); - RasterWorkerPool::RasterTask::Queue empty; + RasterTaskQueue empty; raster_worker_pool_->ScheduleTasks(&empty); RunMessageLoopUntilAllTasksHaveCompleted(); |