Experiments with deque to see if it's more allocation friendly
This commit is contained in:
		
							parent
							
								
									41eb07e35b
								
							
						
					
					
						commit
						876a551cd8
					
				| @ -128,7 +128,7 @@ EdgeBasedGraphFactory::EdgeBasedGraphFactory(int nodes, std::vector<NodeBasedEdg | ||||
|     INFO("Converted " << inputEdges.size() << " node-based edges into " << _nodeBasedGraph->GetNumberOfEdges() << " edge-based nodes."); | ||||
| } | ||||
| 
 | ||||
| void EdgeBasedGraphFactory::GetEdgeBasedEdges( std::vector< EdgeBasedEdge >& outputEdgeList ) { | ||||
| void EdgeBasedGraphFactory::GetEdgeBasedEdges( std::deque< EdgeBasedEdge >& outputEdgeList ) { | ||||
| 
 | ||||
|     GUARANTEE(0 == outputEdgeList.size(), "Vector passed to EdgeBasedGraphFactory::GetEdgeBasedEdges(..) is not empty"); | ||||
|     GUARANTEE(0 != edgeBasedEdges.size(), "No edges in edge based graph"); | ||||
| @ -195,7 +195,6 @@ void EdgeBasedGraphFactory::InsertEdgeBasedNode( | ||||
| } | ||||
| 
 | ||||
| void EdgeBasedGraphFactory::Run() { | ||||
|     INFO("Generating edge based representation of input data"); | ||||
| //    edgeBasedNodes.reserve(_nodeBasedGraph->GetNumberOfEdges());
 | ||||
|     Percent p(_nodeBasedGraph->GetNumberOfNodes()); | ||||
|     int numberOfSkippedTurns(0); | ||||
| @ -253,8 +252,8 @@ void EdgeBasedGraphFactory::Run() { | ||||
|                         //distance += heightPenalty;
 | ||||
|                         //distance += ComputeTurnPenalty(u, v, w);
 | ||||
|                         assert(edgeData1.edgeBasedNodeID != edgeData2.edgeBasedNodeID); | ||||
|                         if(edgeBasedEdges.size() == edgeBasedEdges.capacity()-3) | ||||
|                             edgeBasedEdges.reserve(edgeBasedEdges.size()*1.1); | ||||
| //                        if(edgeBasedEdges.size() == edgeBasedEdges.capacity()-3)
 | ||||
| //                            edgeBasedEdges.reserve(edgeBasedEdges.size()*1.1);
 | ||||
|                         if(originalEdgeData.size() == originalEdgeData.capacity()-3) | ||||
|                             originalEdgeData.reserve(originalEdgeData.size()*1.1); | ||||
|                         OriginalEdgeData oed(v,edgeData2.nameID, turnInstruction); | ||||
|  | ||||
| @ -29,6 +29,7 @@ | ||||
| #include <boost/property_tree/ptree.hpp> | ||||
| #include <boost/property_tree/ini_parser.hpp> | ||||
| 
 | ||||
| #include <deque> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include <cstdlib> | ||||
| @ -103,7 +104,7 @@ private: | ||||
|     RestrictionMap _restrictionMap; | ||||
| 
 | ||||
| 
 | ||||
|     std::vector<EdgeBasedEdge> edgeBasedEdges; | ||||
|     std::deque<EdgeBasedEdge> edgeBasedEdges; | ||||
|     std::vector<EdgeBasedNode> edgeBasedNodes; | ||||
|     std::vector<OriginalEdgeData> originalEdgeData; | ||||
|     std::vector<NodeInfo>       inputNodeInfoList; | ||||
| @ -127,7 +128,7 @@ public: | ||||
|     explicit EdgeBasedGraphFactory(int nodes, std::vector<InputEdgeT> & inputEdges, std::vector<NodeID> & _bollardNodes, std::vector<NodeID> & trafficLights, std::vector<_Restriction> & inputRestrictions, std::vector<NodeInfo> & nI, boost::property_tree::ptree speedProfile, std::string & srtm); | ||||
| 
 | ||||
|     void Run(); | ||||
|     void GetEdgeBasedEdges( std::vector< EdgeBasedEdge >& edges ); | ||||
|     void GetEdgeBasedEdges( std::deque< EdgeBasedEdge >& edges ); | ||||
|     void GetEdgeBasedNodes( std::vector< EdgeBasedNode> & nodes); | ||||
|     void GetOriginalEdgeData( std::vector< OriginalEdgeData> & originalEdgeData); | ||||
|     short AnalyzeTurn(const NodeID u, const NodeID v, const NodeID w) const; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user