diff options
Diffstat (limited to 'intern/cycles/render/stats.cpp')
-rw-r--r-- | intern/cycles/render/stats.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/intern/cycles/render/stats.cpp b/intern/cycles/render/stats.cpp index 0937b95a891..1a840a906a5 100644 --- a/intern/cycles/render/stats.cpp +++ b/intern/cycles/render/stats.cpp @@ -34,6 +34,12 @@ bool namedSizeEntryComparator(const NamedSizeEntry &a, const NamedSizeEntry &b) return a.size > b.size; } +bool namedTimeEntryComparator(const NamedTimeEntry &a, const NamedTimeEntry &b) +{ + /* We sort in descending order. */ + return a.time > b.time; +} + bool namedTimeSampleEntryComparator(const NamedNestedSampleStats &a, const NamedNestedSampleStats &b) { @@ -55,6 +61,14 @@ NamedSizeEntry::NamedSizeEntry(const string &name, size_t size) : name(name), si { } +NamedTimeEntry::NamedTimeEntry() : name(""), time(0) +{ +} + +NamedTimeEntry::NamedTimeEntry(const string &name, double time) : name(name), time(time) +{ +} + /* Named size statistics. */ NamedSizeStats::NamedSizeStats() : total_size(0) @@ -87,6 +101,20 @@ string NamedSizeStats::full_report(int indent_level) return result; } +string NamedTimeStats::full_report(int indent_level) +{ + const string indent(indent_level * kIndentNumSpaces, ' '); + const string double_indent = indent + indent; + string result = ""; + result += string_printf("%sTotal time: %fs\n", indent.c_str(), total_time); + sort(entries.begin(), entries.end(), namedTimeEntryComparator); + foreach (const NamedTimeEntry &entry, entries) { + result += string_printf( + "%s%-40s %fs\n", double_indent.c_str(), entry.name.c_str(), entry.time); + } + return result; +} + /* Named time sample statistics. */ NamedNestedSampleStats::NamedNestedSampleStats() : name(""), self_samples(0), sum_samples(0) @@ -317,4 +345,55 @@ string RenderStats::full_report() return result; } +NamedTimeStats::NamedTimeStats() : total_time(0.0) +{ +} + +string UpdateTimeStats::full_report(int indent_level) +{ + return times.full_report(indent_level + 1); +} + +SceneUpdateStats::SceneUpdateStats() +{ +} + +string SceneUpdateStats::full_report() +{ + string result = ""; + result += "Scene:\n" + scene.full_report(1); + result += "Geometry:\n" + geometry.full_report(1); + result += "Light:\n" + light.full_report(1); + result += "Object:\n" + object.full_report(1); + result += "Image:\n" + image.full_report(1); + result += "Background:\n" + background.full_report(1); + result += "Bake:\n" + bake.full_report(1); + result += "Camera:\n" + camera.full_report(1); + result += "Film:\n" + film.full_report(1); + result += "Integrator:\n" + integrator.full_report(1); + result += "OSL:\n" + osl.full_report(1); + result += "Particles:\n" + particles.full_report(1); + result += "SVM:\n" + svm.full_report(1); + result += "Tables:\n" + tables.full_report(1); + return result; +} + +void SceneUpdateStats::clear() +{ + geometry.times.clear(); + image.times.clear(); + light.times.clear(); + object.times.clear(); + background.times.clear(); + bake.times.clear(); + camera.times.clear(); + film.times.clear(); + integrator.times.clear(); + osl.times.clear(); + particles.times.clear(); + scene.times.clear(); + svm.times.clear(); + tables.times.clear(); +} + CCL_NAMESPACE_END |