Skipping ContractionCleantup entirely. Avoids a big allocation. Removing
DELETE() macro.
This commit is contained in:
parent
b16f3f91d9
commit
8377e411cb
@ -69,6 +69,11 @@ public:
|
||||
bool forward:1;
|
||||
bool backward:1;
|
||||
} data;
|
||||
bool operator<( const Edge& right ) const {
|
||||
if ( source != right.source )
|
||||
return source < right.source;
|
||||
return target < right.target;
|
||||
}
|
||||
|
||||
//sorts by source and other attributes
|
||||
static bool CompareBySource( const Edge& left, const Edge& right ) {
|
||||
|
@ -67,7 +67,7 @@ public:
|
||||
}
|
||||
|
||||
virtual ~ViaRoutePlugin() {
|
||||
DELETE( searchEngine );
|
||||
delete searchEngine;
|
||||
}
|
||||
|
||||
std::string GetDescriptor() const { return pluginDescriptorString; }
|
||||
@ -139,6 +139,7 @@ public:
|
||||
}
|
||||
reply.status = http::Reply::ok;
|
||||
|
||||
//TODO: Move to member as smart pointer
|
||||
BaseDescriptor<SearchEngine<EdgeData, StaticGraph<EdgeData> > > * desc;
|
||||
std::string JSONParameter = routeParameters.options.Find("jsonp");
|
||||
if("" != JSONParameter) {
|
||||
@ -234,7 +235,7 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
DELETE( desc );
|
||||
delete desc;
|
||||
return;
|
||||
}
|
||||
private:
|
||||
|
@ -44,7 +44,7 @@ public:
|
||||
|
||||
for(unsigned i = 0; i < _pluginVector.size(); i++) {
|
||||
BasePlugin * tempPointer = _pluginVector[i];
|
||||
DELETE( tempPointer );
|
||||
delete tempPointer;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
||||
#include "NASAGridSquare.h"
|
||||
|
||||
NasaGridSquare::~NasaGridSquare() {
|
||||
DELETE(elevationMap);
|
||||
delete elevationMap;
|
||||
}
|
||||
|
||||
std::string NasaGridSquare::make_filename(const char* ext) const {
|
||||
@ -66,7 +66,7 @@ void NasaGridSquare::load(const char* filename) {
|
||||
INFO("uncompressed: " << stat.size);
|
||||
INFO("compressed: " << stat.comp_size);
|
||||
num_bytes = stat.size;
|
||||
DELETE(elevationMap);
|
||||
delete elevationMap;
|
||||
elevationMap = new char[stat.size];
|
||||
|
||||
zip_file * file = zip_fopen_index(test, 0, 0 );
|
||||
|
@ -131,13 +131,13 @@ int main (int argc, char *argv[]) {
|
||||
|
||||
std::vector<EdgeBasedGraphFactory::EdgeBasedNode> nodeBasedEdgeList;
|
||||
edgeBasedGraphFactory->GetEdgeBasedNodes(nodeBasedEdgeList);
|
||||
DELETE(edgeBasedGraphFactory);
|
||||
delete edgeBasedGraphFactory;
|
||||
double expansionHasFinishedTime = get_timestamp() - startupTime;
|
||||
|
||||
WritableGrid * writeableGrid = new WritableGrid();
|
||||
INFO("building grid ...");
|
||||
writeableGrid->ConstructGrid(nodeBasedEdgeList, ramIndexOut, fileIndexOut);
|
||||
DELETE( writeableGrid );
|
||||
delete writeableGrid;
|
||||
CRC32 crc32;
|
||||
unsigned crc32OfNodeBasedEdgeList = crc32((char *)&(nodeBasedEdgeList[0]), nodeBasedEdgeList.size()*sizeof(EdgeBasedGraphFactory::EdgeBasedNode));
|
||||
// INFO("CRC32 of data is " << crc32OfNodeBasedEdgeList);
|
||||
@ -164,27 +164,27 @@ int main (int argc, char *argv[]) {
|
||||
contractor->Run();
|
||||
INFO("Contraction took " << get_timestamp() - contractionStartedTimestamp << " sec");
|
||||
|
||||
std::vector< ContractionCleanup::Edge > contractedEdges;
|
||||
contractor->GetEdges( contractedEdges );
|
||||
std::vector< ContractionCleanup::Edge > contractedEdgeList;
|
||||
contractor->GetEdges( contractedEdgeList );
|
||||
delete contractor;
|
||||
|
||||
ContractionCleanup * cleanup = new ContractionCleanup(edgeBasedNodeNumber, contractedEdges);
|
||||
contractedEdges.clear();
|
||||
std::vector<ContractionCleanup::Edge>().swap(contractedEdges);
|
||||
cleanup->Run();
|
||||
|
||||
std::vector< InputEdge> cleanedEdgeList;
|
||||
cleanup->GetData(cleanedEdgeList);
|
||||
DELETE( cleanup );
|
||||
// ContractionCleanup * cleanup = new ContractionCleanup(edgeBasedNodeNumber, contractedEdges);
|
||||
// contractedEdges.clear();
|
||||
// std::vector<ContractionCleanup::Edge>().swap(contractedEdges);
|
||||
// cleanup->Run();
|
||||
//
|
||||
// std::vector< InputEdge> cleanedEdgeList;
|
||||
// cleanup->GetData(cleanedEdgeList);
|
||||
// delete cleanup;
|
||||
|
||||
INFO("Building Node Array");
|
||||
sort(cleanedEdgeList.begin(), cleanedEdgeList.end());
|
||||
sort(contractedEdgeList.begin(), contractedEdgeList.end());
|
||||
unsigned numberOfNodes = 0;
|
||||
unsigned numberOfEdges = cleanedEdgeList.size();
|
||||
unsigned numberOfEdges = contractedEdgeList.size();
|
||||
INFO("Serializing compacted graph");
|
||||
ofstream edgeOutFile(edgeOut, ios::binary);
|
||||
|
||||
BOOST_FOREACH(InputEdge & edge, cleanedEdgeList) {
|
||||
BOOST_FOREACH(ContractionCleanup::Edge & edge, contractedEdgeList) {
|
||||
if(edge.source > numberOfNodes) {
|
||||
numberOfNodes = edge.source;
|
||||
}
|
||||
@ -201,7 +201,7 @@ int main (int argc, char *argv[]) {
|
||||
StaticGraph<EdgeData>::EdgeIterator position = 0;
|
||||
for ( StaticGraph<EdgeData>::NodeIterator node = 0; node <= numberOfNodes; ++node ) {
|
||||
StaticGraph<EdgeData>::EdgeIterator lastEdge = edge;
|
||||
while ( edge < numberOfEdges && cleanedEdgeList[edge].source == node )
|
||||
while ( edge < numberOfEdges && contractedEdgeList[edge].source == node )
|
||||
++edge;
|
||||
_nodes[node].firstEdge = position; //=edge
|
||||
position += edge - lastEdge; //remove
|
||||
@ -219,11 +219,11 @@ int main (int argc, char *argv[]) {
|
||||
StaticGraph<EdgeData>::_StrEdge currentEdge;
|
||||
for ( StaticGraph<EdgeData>::NodeIterator node = 0; node < numberOfNodes; ++node ) {
|
||||
for ( StaticGraph<EdgeData>::EdgeIterator i = _nodes[node].firstEdge, e = _nodes[node+1].firstEdge; i != e; ++i ) {
|
||||
assert(node != cleanedEdgeList[edge].target);
|
||||
currentEdge.target = cleanedEdgeList[edge].target;
|
||||
currentEdge.data = cleanedEdgeList[edge].data;
|
||||
assert(node != contractedEdgeList[edge].target);
|
||||
currentEdge.target = contractedEdgeList[edge].target;
|
||||
currentEdge.data = contractedEdgeList[edge].data;
|
||||
if(currentEdge.data.distance <= 0) {
|
||||
INFO("Edge: " << i << ",source: " << cleanedEdgeList[edge].source << ", target: " << cleanedEdgeList[edge].target << ", dist: " << currentEdge.data.distance);
|
||||
INFO("Edge: " << i << ",source: " << contractedEdgeList[edge].source << ", target: " << contractedEdgeList[edge].target << ", dist: " << currentEdge.data.distance);
|
||||
ERR("Failed at edges of node " << node << " of " << numberOfNodes);
|
||||
}
|
||||
//Serialize edges
|
||||
@ -237,7 +237,7 @@ int main (int argc, char *argv[]) {
|
||||
INFO("Contraction: " << (edgeBasedNodeNumber/expansionHasFinishedTime) << " nodes/sec and "<< usedEdgeCounter/endTime << " edges/sec");
|
||||
|
||||
edgeOutFile.close();
|
||||
cleanedEdgeList.clear();
|
||||
//cleanedEdgeList.clear();
|
||||
_nodes.clear();
|
||||
INFO("finished preprocessing");
|
||||
return 0;
|
||||
|
@ -126,8 +126,8 @@ int main (int argc, char *argv[]) {
|
||||
std::cout << std::endl << "[server] shutting down" << std::endl;
|
||||
s->Stop();
|
||||
t.join();
|
||||
DELETE(s);
|
||||
DELETE(objects);
|
||||
delete s;
|
||||
delete objects;
|
||||
} catch (std::exception& e) {
|
||||
std::cerr << "[fatal error] exception: " << e.what() << std::endl;
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ using namespace std;
|
||||
#define DEBUG(x) do {std::cout << "[debug " << __FILE__ << ":" << __LINE__ << "] " << x << std::endl;} while(0);
|
||||
#define GUARANTEE(x,y) do { {do{ if(false == (x)) { ERR(y) } } while(0);} } while(0);
|
||||
#endif
|
||||
#define DELETE(x) do { if(NULL != x) { delete x; x = NULL; } }while(0);
|
||||
//#define DELETE(x) do { if(NULL != x) { delete x; x = NULL; } }while(0);
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159265358979323846
|
||||
|
Loading…
Reference in New Issue
Block a user