summaryrefslogtreecommitdiff
path: root/src/client
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/client
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/client')
-rw-r--r--src/client/clientlauncher.cpp2
-rw-r--r--src/client/tile.cpp12
2 files changed, 7 insertions, 7 deletions
diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp
index 2adac53c2..bdd16205f 100644
--- a/src/client/clientlauncher.cpp
+++ b/src/client/clientlauncher.cpp
@@ -530,7 +530,7 @@ bool ClientLauncher::create_engine_device()
// Determine driver
video::E_DRIVER_TYPE driverType = video::EDT_OPENGL;
- std::string driverstring = g_settings->get("video_driver");
+ const std::string &driverstring = g_settings->get("video_driver");
std::vector<video::E_DRIVER_TYPE> drivers
= porting::getSupportedVideoDrivers();
u32 i;
diff --git a/src/client/tile.cpp b/src/client/tile.cpp
index 000c766d0..85d388d6e 100644
--- a/src/client/tile.cpp
+++ b/src/client/tile.cpp
@@ -134,9 +134,8 @@ std::string getTexturePath(const std::string &filename)
/*
Check from texture_path
*/
- std::string texture_path = g_settings->get("texture_path");
- if (texture_path != "")
- {
+ const std::string &texture_path = g_settings->get("texture_path");
+ if (texture_path != "") {
std::string testpath = texture_path + DIR_DELIM + filename;
// Check all filename extensions. Returns "" if not found.
fullpath = getImagePath(testpath);
@@ -1854,7 +1853,7 @@ bool TextureSource::generateImagePart(std::string part_of_name,
for (u32 x = 0; x < dim.Width; x++)
{
video::SColor c = baseimg->getPixel(x, y);
- c.color ^= mask;
+ c.color ^= mask;
baseimg->setPixel(x, y, c);
}
}
@@ -2266,7 +2265,8 @@ video::ITexture* TextureSource::getNormalTexture(const std::string &name)
if (isKnownSourceImage("override_normal.png"))
return getTexture("override_normal.png");
std::string fname_base = name;
- std::string normal_ext = "_normal.png";
+ static const char *normal_ext = "_normal.png";
+ static const uint32_t normal_ext_size = strlen(normal_ext);
size_t pos = fname_base.find(".");
std::string fname_normal = fname_base.substr(0, pos) + normal_ext;
if (isKnownSourceImage(fname_normal)) {
@@ -2274,7 +2274,7 @@ video::ITexture* TextureSource::getNormalTexture(const std::string &name)
size_t i = 0;
while ((i = fname_base.find(".", i)) != std::string::npos) {
fname_base.replace(i, 4, normal_ext);
- i += normal_ext.length();
+ i += normal_ext_size;
}
return getTexture(fname_base);
}