From 5c3546e459ede7fbdfc22b340ed6b2af5073ec5b Mon Sep 17 00:00:00 2001
From: gregorycu <gregory.currie@gmail.com>
Date: Mon, 2 Nov 2015 14:17:44 +1100
Subject: [PATCH] Speed up saving of profiling data by 27x

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 | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/game.cpp b/src/game.cpp
index df5ab701a..d74c1fa1d 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -489,7 +489,7 @@ class ProfilerGraph
 			color(color)
 		{}
 	};
-	std::vector<Piece> m_log;
+	std::deque<Piece> m_log;
 public:
 	u32 m_log_max_size;
 
@@ -512,7 +512,7 @@ class ProfilerGraph
 	{
 		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 @@ class ProfilerGraph
 			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;
-- 
GitLab