Externalized even more of the temporary data structures.
This commit is contained in:
parent
44af60563d
commit
8c2bd8bd88
@ -21,20 +21,23 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
||||
#ifndef CONTRACTOR_H_INCLUDED
|
||||
#define CONTRACTOR_H_INCLUDED
|
||||
#include <algorithm>
|
||||
#include <ctime>
|
||||
#include <limits>
|
||||
#include <queue>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
#include <stxxl.h>
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
|
||||
#include "../DataStructures/DynamicGraph.h"
|
||||
#include "../DataStructures/Percent.h"
|
||||
#include "../DataStructures/BinaryHeap.h"
|
||||
#include "../Util/OpenMPReplacement.h"
|
||||
#include "../Util/StringUtil.h"
|
||||
|
||||
#include <ctime>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <set>
|
||||
#include <stack>
|
||||
#include <limits>
|
||||
|
||||
class Contractor {
|
||||
|
||||
@ -98,7 +101,7 @@ public:
|
||||
|
||||
template<class ContainerT >
|
||||
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;
|
||||
//
|
||||
|
@ -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<class ContainerT>
|
||||
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 ) {
|
||||
|
Loading…
Reference in New Issue
Block a user