Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2016-04-04 14:43:19 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-04-04 14:43:19 +0300
commit5ab3a97dbbcfe2cb2bc7093f5e18a195eb31f080 (patch)
treef961318543f1ca5b5a506e04c29f00006259e1f1 /intern/cycles/util/util_task.cpp
parentba7c2b7b7317a3d7f81bf0e70468124a6c06e96d (diff)
Cycles: Log overall time spent on building object's BVH
We had per-tree statistics already, but it's a bit tricky to see overall time because trees could be building in parallel. In fact, we can now print statistics for any TaskPool.
Diffstat (limited to 'intern/cycles/util/util_task.cpp')
-rw-r--r--intern/cycles/util/util_task.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/intern/cycles/util/util_task.cpp b/intern/cycles/util/util_task.cpp
index 28bbc8856c6..d3aef6c7496 100644
--- a/intern/cycles/util/util_task.cpp
+++ b/intern/cycles/util/util_task.cpp
@@ -18,6 +18,7 @@
#include "util_foreach.h"
#include "util_system.h"
#include "util_task.h"
+#include "util_time.h"
//#define THREADING_DEBUG_ENABLED
@@ -34,6 +35,7 @@ CCL_NAMESPACE_BEGIN
TaskPool::TaskPool()
{
+ num_tasks_handled = 0;
num = 0;
do_cancel = false;
}
@@ -58,7 +60,7 @@ void TaskPool::push(const TaskRunFunction& run, bool front)
push(new Task(run), front);
}
-void TaskPool::wait_work()
+void TaskPool::wait_work(Summary *stats)
{
thread_scoped_lock num_lock(num_mutex);
@@ -108,6 +110,11 @@ void TaskPool::wait_work()
THREADING_DEBUG("num==%d, condition wait done in TaskPool::wait_work !found_entry\n", num);
}
}
+
+ if(stats != NULL) {
+ stats->time_total = time_dt() - start_time;
+ stats->num_tasks_handled = num_tasks_handled;
+ }
}
void TaskPool::cancel()
@@ -158,7 +165,11 @@ void TaskPool::num_decrease(int done)
void TaskPool::num_increase()
{
thread_scoped_lock num_lock(num_mutex);
+ if(num_tasks_handled == 0) {
+ start_time = time_dt();
+ }
num++;
+ num_tasks_handled++;
THREADING_DEBUG("num==%d, notifying all in TaskPool::num_increase\n", num);
num_cond.notify_all();
}
@@ -450,5 +461,13 @@ void DedicatedTaskPool::clear()
num_decrease(done);
}
+string TaskPool::Summary::full_report() const
+{
+ string report = "";
+ report += string_printf("Total time: %f\n", time_total);
+ report += string_printf("Tasks handled: %d\n", num_tasks_handled);
+ return report;
+}
+
CCL_NAMESPACE_END