From 592fb437e7ca10087c4b34f1517e0d4549ba4493 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 8 Dec 2022 18:00:01 +0300 Subject: [PATCH] Electron crystal simulation computation time measurement --- examples/electron_crystal.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/examples/electron_crystal.cpp b/examples/electron_crystal.cpp index 2bf36838..e3a6dde4 100644 --- a/examples/electron_crystal.cpp +++ b/examples/electron_crystal.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include @@ -39,6 +40,8 @@ struct main_scene float step = 1e-4f; float multipole_threshold = 2.f; + std::shared_ptr time_value_label; + random::generator rng{random::device{}}; std::vector> points; @@ -48,6 +51,7 @@ struct main_scene gfx::painter painter; util::clock<> clock; + util::moving_average update_time{64}; }; main_scene::main_scene(ui::controller & ui_controller) @@ -127,7 +131,14 @@ main_scene::main_scene(ui::controller & ui_controller) }); precision_slider->set_value(15); - layout->set_size(3, 3); + auto time_name_label = element_factory.make_label("Computation time:"); + time_name_label->set_valign(ui::label::valignment::center); + time_name_label->set_halign(ui::label::halignment::right); + time_value_label = element_factory.make_label(""); + time_value_label->set_valign(ui::label::valignment::center); + time_value_label->set_halign(ui::label::halignment::center); + + layout->set_size(4, 3); layout->set_column_weight(0, 0.5f); layout->set_column_weight(1, 0.5f); layout->set(0, 0, count_name_label); @@ -139,6 +150,8 @@ main_scene::main_scene(ui::controller & ui_controller) layout->set(2, 0, precision_name_label); layout->set(2, 1, precision_value_label); layout->set(2, 2, precision_slider); + layout->set(3, 0, time_name_label); + layout->set(3, 1, time_value_label); ui::style style; style.font = ui::make_default_9x12_font(); @@ -310,6 +323,9 @@ void main_scene::update() edges.push_back({v0, v1}); degree[v0]++; } + + update_time.push(clock.count()); + time_value_label->set_text(util::to_string(std::setprecision(3), std::fixed, update_time.average() * 1000.f, "ms")); } void main_scene::present()