Speed up saving of profiling data by 27x
authorgregorycu <gregory.currie@gmail.com>
Mon, 2 Nov 2015 03:17:44 +0000 (14:17 +1100)
committerest31 <MTest31@outlook.com>
Mon, 2 Nov 2015 12:25:21 +0000 (13:25 +0100)
On Windows Release x64 bit build this changes:

ProfilerGraph::put
1.68% -> 0.061%

ProfilerGraph::draw
12% -> 17.%

So yes, there is a tradeoff between saving profiling data
(executed always) and drawing the profiler graph (executed very rarely).
But usually you don't have the profiler graph open.

src/game.cpp

index df5ab701a96893ab6b36d59c7996d2d13d1cc24f..d74c1fa1db4223a26221d58a0131f1d027b230c5 100644 (file)
@@ -489,7 +489,7 @@ private:
                        color(color)
                {}
        };
-       std::vector<Piece> m_log;
+       std::deque<Piece> m_log;
 public:
        u32 m_log_max_size;
 
@@ -512,7 +512,7 @@ public:
        {
                std::map<std::string, Meta> m_meta;
 
-               for (std::vector<Piece>::const_iterator k = m_log.begin();
+               for (std::deque<Piece>::const_iterator k = m_log.begin();
                                k != m_log.end(); ++k) {
                        const Piece &piece = *k;
 
@@ -600,7 +600,7 @@ public:
                        float lastscaledvalue = 0.0;
                        bool lastscaledvalue_exists = false;
 
-                       for (std::vector<Piece>::const_iterator j = m_log.begin();
+                       for (std::deque<Piece>::const_iterator j = m_log.begin();
                                        j != m_log.end(); ++j) {
                                const Piece &piece = *j;
                                float value = 0;