Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
8f5a3ac
[ML] Enhance CHierarchicalResultsNormalizer with memory usage trackin…
valeriy42 Mar 16, 2025
84eab82
First unit test working
valeriy42 Mar 17, 2025
b93c2f1
Add memory usage
valeriy42 Mar 18, 2025
3c0b574
[ML] Add unit tests for CHierarchicalResultsNormalizer with memory us…
valeriy42 Mar 18, 2025
4c76090
[ML] Add memory usage tests for CConcreteHierarchicalResultsLevelSet
valeriy42 Mar 18, 2025
fbd9be2
Formatting
valeriy42 Mar 18, 2025
f4aa37a
Merge branch 'main' of https://github.com/elastic/ml-cpp into enhance…
valeriy42 Mar 19, 2025
a1384f2
Fix linting issues and add changelog
valeriy42 Mar 19, 2025
9696676
fix formatting
valeriy42 Mar 19, 2025
98e5105
Refactor CHierarchicalResultsNormalizer to improve variable naming an…
valeriy42 Mar 19, 2025
4899211
add comment to ignore sonar issue
valeriy42 Mar 19, 2025
048fab1
copyright formatting
valeriy42 Mar 19, 2025
ea559bd
formatting
valeriy42 Mar 19, 2025
9d63e74
Add limits parameter to CResultNormalizer constructor and remove unus…
valeriy42 Mar 19, 2025
2f3bae3
Remove unused staticSize method and update memory usage calculations …
valeriy42 Mar 19, 2025
f30c962
Refactor memory usage methods in SNormalizer and update Main.cc to us…
valeriy42 Mar 20, 2025
64ff6c4
Add export macro to CHierarchicalResultsLevelSet class
valeriy42 Mar 20, 2025
686264b
Add memory usage methods to CHierarchicalResultsAggregator and update…
valeriy42 Mar 20, 2025
04863d1
Remove debug memory usage methods from CHierarchicalResultsAggregator…
valeriy42 Mar 20, 2025
e58b698
Remove dead code
valeriy42 Mar 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[ML] Add memory usage tests for CConcreteHierarchicalResultsLevelSet
  • Loading branch information
valeriy42 committed Mar 18, 2025
commit 4c76090125682337e10c6f9bd29886daf7990a88
6 changes: 6 additions & 0 deletions include/model/CHierarchicalResultsLevelSet.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@

#include <cstdint>

namespace CHierarchicalResultsLevelSetTest {
struct testMemoryUsage;
}

namespace ml {
namespace model {

Expand Down Expand Up @@ -327,6 +331,8 @@ class CHierarchicalResultsLevelSet : public CHierarchicalResultsVisitor {
//! The container for leaves comprising distinct named
//! (partition, person) field name pairs.
TWordTypePrVec m_LeafSet;

friend struct CHierarchicalResultsLevelSetTest::testMemoryUsage;
};

template<typename T>
Expand Down
29 changes: 29 additions & 0 deletions lib/model/unittest/CHierarchicalResultsLevelSetTest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
*/

#include <core/CLogger.h>
#include <core/CMemoryDef.h>

#include <model/CAnnotatedProbability.h>
#include <model/CHierarchicalResults.h>
Expand All @@ -26,6 +27,10 @@ struct STestNode {
STestNode(const std::string& name) : s_Name(name) {}
std::string print() const { return s_Name; }
std::string s_Name;

std::size_t memoryUsage() const {
return sizeof(s_Name);
}
};

class CConcreteHierarchicalResultsLevelSet
Expand Down Expand Up @@ -129,6 +134,30 @@ BOOST_AUTO_TEST_CASE(testElements) {
BOOST_REQUIRE_EQUAL(std::string{"[\"PA pa1 PB pb1\"]"},
ml::core::CContainerPrinter::print(result));
}

}

BOOST_AUTO_TEST_CASE(testMemoryUsage) {
CConcreteHierarchicalResultsLevelSet levelSet(STestNode("root"));
std::size_t memoryUsage = levelSet.memoryUsage();
BOOST_REQUIRE(memoryUsage > 0);

auto addAndCheckMemoryUsage = [&memoryUsage, &levelSet](auto& container, const std::string& name) {
container.emplace_back(std::make_pair(ml::core::CCompressedDictionary<1>::CWord(), STestNode(name)));
std::size_t newMemoryUsage = levelSet.memoryUsage();
BOOST_REQUIRE(newMemoryUsage > memoryUsage);
memoryUsage = newMemoryUsage;
};

addAndCheckMemoryUsage(levelSet.m_InfluencerBucketSet, "influencer bucket 1");
addAndCheckMemoryUsage(levelSet.m_InfluencerSet, "influencer 1");
addAndCheckMemoryUsage(levelSet.m_PartitionSet, "partition 1");
addAndCheckMemoryUsage(levelSet.m_PersonSet, "person 1");
addAndCheckMemoryUsage(levelSet.m_LeafSet, "leaf 1");

auto debugMemoryUsage = std::make_shared<ml::core::CMemoryUsage>();
levelSet.debugMemoryUsage(debugMemoryUsage);
BOOST_REQUIRE(debugMemoryUsage->usage() == memoryUsage);
}

BOOST_AUTO_TEST_SUITE_END()