This commit is contained in:
DennisOSRM 2012-02-13 15:21:51 +01:00
parent 8d16c047cc
commit d11524781e
2 changed files with 18 additions and 9 deletions

View File

@ -66,6 +66,7 @@ int main (int argc, char *argv[]) {
ERR("usage: " << std::endl << argv[0] << " <osrm-data> <osrm-restrictions>"); ERR("usage: " << std::endl << argv[0] << " <osrm-data> <osrm-restrictions>");
} }
double startupTime = get_timestamp();
unsigned numberOfThreads = omp_get_num_procs(); unsigned numberOfThreads = omp_get_num_procs();
std::string SRTM_ROOT; std::string SRTM_ROOT;
if(testDataFile("contractor.ini")) { if(testDataFile("contractor.ini")) {
@ -112,16 +113,16 @@ int main (int argc, char *argv[]) {
char levelInfoOut[1024]; strcpy(levelInfoOut, argv[1]); strcat(levelInfoOut, ".levels"); char levelInfoOut[1024]; strcpy(levelInfoOut, argv[1]); strcat(levelInfoOut, ".levels");
std::vector<ImportEdge> edgeList; std::vector<ImportEdge> edgeList;
NodeID n = readBinaryOSRMGraphFromStream(in, edgeList, bollardNodes, trafficLightNodes, &internalToExternaleNodeMapping, inputRestrictions); NodeID nodeBasedNodeNumber = readBinaryOSRMGraphFromStream(in, edgeList, bollardNodes, trafficLightNodes, &internalToExternaleNodeMapping, inputRestrictions);
in.close(); in.close();
INFO("Loaded " << inputRestrictions.size() << " restrictions, " << bollardNodes.size() << " bollard nodes, " << trafficLightNodes.size() << " traffic lights"); INFO("Loaded " << inputRestrictions.size() << " restrictions, " << bollardNodes.size() << " bollard nodes, " << trafficLightNodes.size() << " traffic lights");
EdgeBasedGraphFactory * edgeBasedGraphFactory = new EdgeBasedGraphFactory (n, edgeList, bollardNodes, trafficLightNodes, inputRestrictions, internalToExternaleNodeMapping, SRTM_ROOT); EdgeBasedGraphFactory * edgeBasedGraphFactory = new EdgeBasedGraphFactory (nodeBasedNodeNumber, edgeList, bollardNodes, trafficLightNodes, inputRestrictions, internalToExternaleNodeMapping, SRTM_ROOT);
edgeList.clear(); edgeList.clear();
std::vector<ImportEdge>().swap(edgeList); std::vector<ImportEdge>().swap(edgeList);
edgeBasedGraphFactory->Run(); edgeBasedGraphFactory->Run();
n = edgeBasedGraphFactory->GetNumberOfNodes(); NodeID edgeBasedNodeNumber = edgeBasedGraphFactory->GetNumberOfNodes();
std::vector<EdgeBasedEdge> edgeBasedEdgeList; std::vector<EdgeBasedEdge> edgeBasedEdgeList;
edgeBasedGraphFactory->GetEdgeBasedEdges(edgeBasedEdgeList); edgeBasedGraphFactory->GetEdgeBasedEdges(edgeBasedEdgeList);
@ -129,6 +130,8 @@ int main (int argc, char *argv[]) {
edgeBasedGraphFactory->GetEdgeBasedNodes(nodeBasedEdgeList); edgeBasedGraphFactory->GetEdgeBasedNodes(nodeBasedEdgeList);
DELETE(edgeBasedGraphFactory); DELETE(edgeBasedGraphFactory);
double expansionHasFinishedTime = get_timestamp() - startupTime;
WritableGrid * writeableGrid = new WritableGrid(); WritableGrid * writeableGrid = new WritableGrid();
INFO("building grid ..."); INFO("building grid ...");
writeableGrid->ConstructGrid(nodeBasedEdgeList, ramIndexOut, fileIndexOut); writeableGrid->ConstructGrid(nodeBasedEdgeList, ramIndexOut, fileIndexOut);
@ -148,7 +151,7 @@ int main (int argc, char *argv[]) {
std::vector<_Restriction>().swap(inputRestrictions); std::vector<_Restriction>().swap(inputRestrictions);
INFO("initializing contractor"); INFO("initializing contractor");
Contractor* contractor = new Contractor( n, edgeBasedEdgeList ); Contractor* contractor = new Contractor( edgeBasedNodeNumber, edgeBasedEdgeList );
double contractionStartedTimestamp(get_timestamp()); double contractionStartedTimestamp(get_timestamp());
contractor->Run(); contractor->Run();
INFO("Contraction took " << get_timestamp() - contractionStartedTimestamp << " sec"); INFO("Contraction took " << get_timestamp() - contractionStartedTimestamp << " sec");
@ -157,7 +160,7 @@ int main (int argc, char *argv[]) {
contractor->GetEdges( contractedEdges ); contractor->GetEdges( contractedEdges );
delete contractor; delete contractor;
ContractionCleanup * cleanup = new ContractionCleanup(n, contractedEdges); ContractionCleanup * cleanup = new ContractionCleanup(edgeBasedNodeNumber, contractedEdges);
contractedEdges.clear(); contractedEdges.clear();
std::vector<ContractionCleanup::Edge>().swap(contractedEdges); std::vector<ContractionCleanup::Edge>().swap(contractedEdges);
cleanup->Run(); cleanup->Run();
@ -203,7 +206,7 @@ int main (int argc, char *argv[]) {
edgeOutFile.write((char*) &position, sizeof(unsigned)); edgeOutFile.write((char*) &position, sizeof(unsigned));
edge = 0; edge = 0;
int counter = 0; int usedEdgeCounter = 0;
StaticGraph<EdgeData>::_StrEdge currentEdge; StaticGraph<EdgeData>::_StrEdge currentEdge;
for ( StaticGraph<EdgeData>::NodeIterator node = 0; node < numberOfNodes; ++node ) { 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 ) { for ( StaticGraph<EdgeData>::EdgeIterator i = _nodes[node].firstEdge, e = _nodes[node+1].firstEdge; i != e; ++i ) {
@ -217,10 +220,13 @@ int main (int argc, char *argv[]) {
//Serialize edges //Serialize edges
edgeOutFile.write((char*) &currentEdge, sizeof(StaticGraph<EdgeData>::_StrEdge)); edgeOutFile.write((char*) &currentEdge, sizeof(StaticGraph<EdgeData>::_StrEdge));
++edge; ++edge;
++counter; ++usedEdgeCounter;
} }
} }
INFO("Written " << counter << " edges, expected " << position); double endTime = (get_timestamp() - startupTime);
INFO("Expansion : " << (nodeBasedNodeNumber/expansionHasFinishedTime) << " nodes/sec and "<< (edgeBasedNodeNumber/expansionHasFinishedTime) << " edges/sec");
INFO("Contraction: " << (edgeBasedNodeNumber/expansionHasFinishedTime) << " nodes/sec and "<< usedEdgeCounter/endTime << " edges/sec");
edgeOutFile.close(); edgeOutFile.close();
cleanedEdgeList.clear(); cleanedEdgeList.clear();
_nodes.clear(); _nodes.clear();

View File

@ -80,6 +80,7 @@ int main (int argc, char *argv[]) {
} catch(std::exception & e) { } catch(std::exception & e) {
ERR("Could not instantiate STXXL layer." << std::endl << e.what()); ERR("Could not instantiate STXXL layer." << std::endl << e.what());
} }
double startupTime = get_timestamp();
INFO("extracting data from input file " << argv[1]); INFO("extracting data from input file " << argv[1]);
bool isPBF(false); bool isPBF(false);
@ -484,9 +485,11 @@ int main (int argc, char *argv[]) {
cerr << "Caught Execption:" << e.what() << endl; cerr << "Caught Execption:" << e.what() << endl;
return false; return false;
} }
DELETE(parser);
double endTime = (get_timestamp() - startupTime);
INFO("Processed " << (usedNodeCounter)/(endTime) << " nodes/sec and " << usedEdgeCounter/endTime << " edges/sec");
stringMap.clear(); stringMap.clear();
delete parser;
delete extractCallBacks; delete extractCallBacks;
cout << "[extractor] finished." << endl; cout << "[extractor] finished." << endl;
return 0; return 0;