From 8c2bd8bd88f28f492fcf7462e99de4e91104fd24 Mon Sep 17 00:00:00 2001 From: DennisOSRM Date: Thu, 26 Apr 2012 14:03:01 +0200 Subject: [PATCH] Externalized even more of the temporary data structures. --- Contractor/Contractor.h | 23 +++++++++++++---------- DataStructures/DynamicGraph.h | 7 ++++++- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/Contractor/Contractor.h b/Contractor/Contractor.h index 41f61d19c..6d8e442d4 100644 --- a/Contractor/Contractor.h +++ b/Contractor/Contractor.h @@ -21,20 +21,23 @@ or see http://www.gnu.org/licenses/agpl.txt. #ifndef CONTRACTOR_H_INCLUDED #define CONTRACTOR_H_INCLUDED #include +#include +#include +#include +#include +#include + +#include + #include + #include "../DataStructures/DynamicGraph.h" #include "../DataStructures/Percent.h" #include "../DataStructures/BinaryHeap.h" #include "../Util/OpenMPReplacement.h" #include "../Util/StringUtil.h" -#include -#include -#include -#include -#include -#include class Contractor { @@ -98,7 +101,7 @@ public: template Contractor( int nodes, ContainerT& inputEdges) { - std::vector< _ImportEdge > edges; + stxxl::vector< _ImportEdge > edges; edges.reserve( 2 * inputEdges.size() ); BOOST_FOREACH(typename ContainerT::value_type & currentEdge, inputEdges) { _ImportEdge edge; @@ -169,12 +172,12 @@ public: } } } - std::cout << "ok" << "merged " << edges.size() - edge << " edges out of " << edges.size() << std::endl; + std::cout << "merged " << edges.size() - edge << " edges out of " << edges.size() << std::endl; edges.resize( edge ); - std::vector<_ImportEdge>(edges).swap(edges); _graph.reset( new _DynamicGraph( nodes, edges ) ); - std::vector< _ImportEdge >().swap( edges ); + INFO("Finished building dynamic graph"); + edges.clear(); // unsigned maxdegree = 0; // NodeID highestNode = 0; // diff --git a/DataStructures/DynamicGraph.h b/DataStructures/DynamicGraph.h index 1ee24b134..b188af4dd 100644 --- a/DataStructures/DynamicGraph.h +++ b/DataStructures/DynamicGraph.h @@ -52,12 +52,15 @@ class DynamicGraph { m_edges.reserve( m_numNodes * 1.1 ); m_edges.resize( m_numNodes ); } - DynamicGraph( int nodes, const std::vector< InputEdge > &graph ) + template + DynamicGraph( int nodes, const ContainerT &graph ) { m_numNodes = nodes; m_numEdges = ( EdgeIterator ) graph.size(); m_nodes.reserve( m_numNodes ); + INFO("reserved nodes"); m_nodes.resize( m_numNodes ); + INFO("resized nodes"); EdgeIterator edge = 0; EdgeIterator position = 0; for ( NodeIterator node = 0; node < m_numNodes; ++node ) { @@ -70,7 +73,9 @@ class DynamicGraph { position += m_nodes[node].edges; } m_edges.reserve( position * 1.1 ); + INFO("reserced edges"); m_edges.resize( position ); + INFO("resized edges"); edge = 0; for ( NodeIterator node = 0; node < m_numNodes; ++node ) { for ( EdgeIterator i = m_nodes[node].firstEdge, e = m_nodes[node].firstEdge + m_nodes[node].edges; i != e; ++i ) {