summaryrefslogtreecommitdiff
path: root/src/itemdef.cpp
diff options
context:
space:
mode:
authorLoïc Blot <nerzhul@users.noreply.github.com>2017-03-22 21:41:02 +0100
committerGitHub <noreply@github.com>2017-03-22 21:41:02 +0100
commit072bbba69aa2528c309b76aaec288bdba52e119c (patch)
tree60070fc33757aebdd52c666cdbd3de85fc2e673a /src/itemdef.cpp
parent9efc5da0fb7d276deff55db6e4eb89d24ca72b5d (diff)
downloadminetest-072bbba69aa2528c309b76aaec288bdba52e119c.tar.gz
minetest-072bbba69aa2528c309b76aaec288bdba52e119c.tar.bz2
minetest-072bbba69aa2528c309b76aaec288bdba52e119c.zip
Some performance optimizations (#5424)
* Some performance optimizations This is globally removing some memory useless copy * use a const ref return on std::string Settings::get to prevent data copy on getters which doesn't need to copy it * pass some stack created strings to static const as they are not modified anywhere * Camera: return nametags per const ref instead of a list pointer, we only need to read it * INodeDefManager: getAll should be a result ref writer instead of a return copy * INodeDefManager: getAlias should return a const std::string ref * Minimap: unroll a Scolor creation in blitMinimapPixersToImageRadar to prvent many variable construct/destruct which are unneeded (we rewrite the content in the loop) * CNodeDefManager::updateAliases: prevent a idef getall copy * Profiler: constness * rollback_interface: create real_name later, and use const ref * MapBlockMesh updateFastFaceRow: unroll TileSpec next_tile, which has a cost of 1.8% CPU due to variable allocation/destruction, * MapBlockMesh updateFastFaceRow: copy next_tile to tile only if it's a different tilespec * MapBlockMesh updateFastFaceRow: use memcpy to copy next_lights to lights to do it in a single cpu operation
Diffstat (limited to 'src/itemdef.cpp')
-rw-r--r--src/itemdef.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/itemdef.cpp b/src/itemdef.cpp
index f43e5c970..627ad1b6c 100644
--- a/src/itemdef.cpp
+++ b/src/itemdef.cpp
@@ -275,16 +275,16 @@ public:
assert(i != m_item_definitions.end());
return *(i->second);
}
- virtual std::string getAlias(const std::string &name) const
+ virtual const std::string &getAlias(const std::string &name) const
{
StringMap::const_iterator it = m_aliases.find(name);
if (it != m_aliases.end())
return it->second;
return name;
}
- virtual std::set<std::string> getAll() const
+ virtual void getAll(std::set<std::string> &result) const
{
- std::set<std::string> result;
+ result.clear();
for(std::map<std::string, ItemDefinition *>::const_iterator
it = m_item_definitions.begin();
it != m_item_definitions.end(); ++it) {
@@ -295,7 +295,6 @@ public:
it != m_aliases.end(); ++it) {
result.insert(it->first);
}
- return result;
}
virtual bool isKnown(const std::string &name_) const
{