Skip to content

Commit dd24ff5

Browse files
committed
CoputeGroupingDensity: Use a throttled messenger to send progress updates
1 parent 22df56e commit dd24ff5

File tree

1 file changed

+4
-20
lines changed

1 file changed

+4
-20
lines changed

src/SimplnxReview/Filters/Algorithms/ComputeGroupingDensity.cpp

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include "simplnx/DataStructure/DataArray.hpp"
44
#include "simplnx/DataStructure/NeighborList.hpp"
5+
#include "simplnx/Utilities/MessageHelper.hpp"
56

67
using namespace nx::core;
78

@@ -66,30 +67,13 @@ class FindDensityGrouping
6667
// Default value-initialized to zeroes: https://en.cppreference.com/w/cpp/named_req/DefaultInsertable
6768
checkedFeatureVolumes.resize(numFeatures);
6869
}
69-
int32_t progInt = 0;
70-
usize prevParentId = 1;
71-
usize currentParentId = 1;
72-
auto start = std::chrono::steady_clock::now();
70+
MessageHelper messageHelper(m_MessageHandler);
71+
ThrottledMessenger throttledMessenger = messageHelper.createThrottledMessenger();
7372

7473
for(usize parentIdx = 1; parentIdx < numParents; parentIdx++)
7574
{
76-
progInt = static_cast<float>(parentIdx) / static_cast<float>(numParents) * 100.0f;
77-
auto now = std::chrono::steady_clock::now();
78-
// Only send updates every 1 second
79-
if(std::chrono::duration_cast<std::chrono::milliseconds>(now - start).count() > 1000)
80-
{
81-
currentParentId = parentIdx;
82-
auto totalParentIds = currentParentId - prevParentId;
83-
auto rate = static_cast<float>(totalParentIds) / static_cast<float>(std::chrono::duration_cast<std::chrono::seconds>(now - start).count());
84-
85-
auto remainingParents = numParents - parentIdx;
86-
auto minutesRemain = (remainingParents / rate) / 60; // Convert to minutes
75+
throttledMessenger.sendThrottledMessage([&]() { return fmt::format("[{}%]", CalculatePercentComplete(parentIdx, numParents)); });
8776

88-
std::string message = fmt::format("{}/{} [{}%] at {} parents/sec. Time Remain: {:.2f} Minutes", parentIdx, numParents, progInt, rate, minutesRemain);
89-
m_MessageHandler(nx::core::IFilter::ProgressMessage{nx::core::IFilter::Message::Type::Info, message, progInt});
90-
start = std::chrono::steady_clock::now();
91-
prevParentId = currentParentId;
92-
}
9377
if(m_ShouldCancel)
9478
{
9579
return {};

0 commit comments

Comments
 (0)