perf(hash): Hash caching

added ability for composition to stash their own hash values
This commit is contained in:
2025-12-07 07:47:32 -05:00
parent 9541234a5f
commit 75ba6c8456
5 changed files with 51 additions and 1 deletions

View File

@@ -34,6 +34,7 @@
#include "fourdst/atomic/atomicSpecies.h"
#include "fourdst/atomic/species.h"
#include "fourdst/composition/composition.h"
#include "fourdst/composition/utils/composition_hash.h"
#include "fourdst/composition/utils.h"
#include "fourdst/composition/exceptions/exceptions_composition.h"
@@ -551,6 +552,15 @@ namespace fourdst::composition {
return std::make_unique<Composition>(*this);
}
std::size_t Composition::hash() const {
if (m_cache.hash.has_value()) {
return m_cache.hash.value();
}
std::size_t hash = utils::CompositionHash::hash_exact(*this);
m_cache.hash = hash;
return hash;
}
bool Composition::contains(
const atomic::Species &species
) const noexcept {