Optimize out a lot of std::string construction and allocations (#415)

Update CommandLineParameters.hpp

Update CommandLineParametersTests.cpp

Update WebContext.hpp

xmake check-files -f

Fix MaterialPassRegistry
This commit is contained in:
Jérôme Leclercq
2023-12-30 14:50:57 +01:00
committed by GitHub
parent f7c9060364
commit 79ec135af7
57 changed files with 219 additions and 210 deletions

View File

@@ -4,6 +4,7 @@
#include <Nazara/Utility/Skeleton.hpp>
#include <Nazara/Utility/Joint.hpp>
#include <NazaraUtils/StringHash.hpp>
#include <unordered_map>
#include <Nazara/Utility/Debug.hpp>
@@ -11,7 +12,7 @@ namespace Nz
{
struct SkeletonImpl
{
std::unordered_map<std::string, std::size_t> jointMap;
std::unordered_map<std::string, std::size_t, StringHash<>, std::equal_to<>> jointMap;
std::vector<Joint> joints;
Boxf aabb;
bool aabbUpdated = false;
@@ -68,7 +69,7 @@ namespace Nz
return m_impl->aabb;
}
Joint* Skeleton::GetJoint(const std::string& jointName)
Joint* Skeleton::GetJoint(std::string_view jointName)
{
NazaraAssert(m_impl, "skeleton must have been created");
@@ -91,7 +92,7 @@ namespace Nz
return &m_impl->joints[index];
}
const Joint* Skeleton::GetJoint(const std::string& jointName) const
const Joint* Skeleton::GetJoint(std::string_view jointName) const
{
NazaraAssert(m_impl, "skeleton must have been created");
@@ -132,7 +133,7 @@ namespace Nz
return static_cast<std::size_t>(m_impl->joints.size());
}
std::size_t Skeleton::GetJointIndex(const std::string& jointName) const
std::size_t Skeleton::GetJointIndex(std::string_view jointName) const
{
NazaraAssert(m_impl, "skeleton must have been created");
@@ -259,9 +260,8 @@ namespace Nz
const std::string& name = m_impl->joints[i].GetName();
if (!name.empty())
{
NazaraAssert(m_impl->jointMap.find(name) == m_impl->jointMap.end(), "Joint name \"" + name + "\" is already present in joint map");
m_impl->jointMap[name] = static_cast<std::size_t>(i);
NazaraAssertFmt(!m_impl->jointMap.contains(name), "Joint name \{0}\" is already present in joint map", name);
m_impl->jointMap.emplace(name, i);
}
}