diff options
author | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-03-22 21:41:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-22 21:41:02 +0100 |
commit | 072bbba69aa2528c309b76aaec288bdba52e119c (patch) | |
tree | 60070fc33757aebdd52c666cdbd3de85fc2e673a /src/settings.cpp | |
parent | 9efc5da0fb7d276deff55db6e4eb89d24ca72b5d (diff) | |
download | minetest-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/settings.cpp')
-rw-r--r-- | src/settings.cpp | 29 |
1 files changed, 1 insertions, 28 deletions
diff --git a/src/settings.cpp b/src/settings.cpp index c4c3c9073..b4083264e 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -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) |