mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
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
This commit is contained in:
parent
9efc5da0fb
commit
072bbba69a
16 changed files with 79 additions and 134 deletions
|
@ -90,33 +90,6 @@ bool Settings::checkValueValid(const std::string &value)
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
std::string Settings::sanitizeName(const std::string &name)
|
||||
{
|
||||
std::string n = trim(name);
|
||||
|
||||
for (const char *s = "=\"{}#"; *s; s++)
|
||||
n.erase(std::remove(n.begin(), n.end(), *s), n.end());
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
std::string Settings::sanitizeValue(const std::string &value)
|
||||
{
|
||||
std::string v(value);
|
||||
size_t p = 0;
|
||||
|
||||
if (v.substr(0, 3) == "\"\"\"")
|
||||
v.erase(0, 3);
|
||||
|
||||
while ((p = v.find("\n\"\"\"")) != std::string::npos)
|
||||
v.erase(p, 4);
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
std::string Settings::getMultiline(std::istream &is, size_t *num_lines)
|
||||
{
|
||||
size_t lines = 1;
|
||||
|
@ -398,7 +371,7 @@ Settings *Settings::getGroup(const std::string &name) const
|
|||
}
|
||||
|
||||
|
||||
std::string Settings::get(const std::string &name) const
|
||||
const std::string &Settings::get(const std::string &name) const
|
||||
{
|
||||
const SettingsEntry &entry = getEntry(name);
|
||||
if (entry.is_group)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue