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