summaryrefslogtreecommitdiff
path: root/src/profiler.h
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/profiler.h
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/profiler.h')
-rw-r--r--src/profiler.h33
1 files changed, 14 insertions, 19 deletions
diff --git a/src/profiler.h b/src/profiler.h
index e8eac86b1..6da115972 100644
--- a/src/profiler.h
+++ b/src/profiler.h
@@ -119,39 +119,34 @@ public:
u32 minindex, maxindex;
paging(m_data.size(), page, pagecount, minindex, maxindex);
- for(std::map<std::string, float>::iterator
- i = m_data.begin();
- i != m_data.end(); ++i)
- {
- if(maxindex == 0)
+ for (std::map<std::string, float>::const_iterator i = m_data.begin();
+ i != m_data.end(); ++i) {
+ if (maxindex == 0)
break;
maxindex--;
- if(minindex != 0)
- {
+ if (minindex != 0) {
minindex--;
continue;
}
- std::string name = i->first;
int avgcount = 1;
- std::map<std::string, int>::iterator n = m_avgcounts.find(name);
- if(n != m_avgcounts.end()){
+ std::map<std::string, int>::const_iterator n = m_avgcounts.find(i->first);
+ if (n != m_avgcounts.end()) {
if(n->second >= 1)
avgcount = n->second;
}
- o<<" "<<name<<": ";
+ o << " " << i->first << ": ";
s32 clampsize = 40;
- s32 space = clampsize - name.size();
- for(s32 j=0; j<space; j++)
- {
- if(j%2 == 0 && j < space - 1)
- o<<"-";
+ s32 space = clampsize - i->first.size();
+ for(s32 j = 0; j < space; j++) {
+ if (j % 2 == 0 && j < space - 1)
+ o << "-";
else
- o<<" ";
+ o << " ";
}
- o<<(i->second / avgcount);
- o<<std::endl;
+ o << (i->second / avgcount);
+ o << std::endl;
}
}