Ref'ed and consted parameters. Gives some extra performance when

creating grid.
This commit is contained in:
DennisOSRM 2012-04-14 14:36:11 +02:00
parent 811d77eccb
commit 086e10671f
2 changed files with 7 additions and 6 deletions

View File

@ -49,7 +49,7 @@ class DynamicGraph {
m_nodes.reserve( m_numNodes ); m_nodes.reserve( m_numNodes );
m_nodes.resize( m_numNodes ); m_nodes.resize( m_numNodes );
m_edges.reserve( m_numNodes * 1.2 ); m_edges.reserve( m_numNodes * 1.1 );
m_edges.resize( m_numNodes ); m_edges.resize( m_numNodes );
} }
DynamicGraph( int nodes, const std::vector< InputEdge > &graph ) DynamicGraph( int nodes, const std::vector< InputEdge > &graph )
@ -69,7 +69,7 @@ class DynamicGraph {
m_nodes[node].edges = edge - lastEdge; m_nodes[node].edges = edge - lastEdge;
position += m_nodes[node].edges; position += m_nodes[node].edges;
} }
m_edges.reserve( position * 1.2 ); m_edges.reserve( position * 1.1 );
m_edges.resize( position ); m_edges.resize( position );
edge = 0; edge = 0;
for ( NodeIterator node = 0; node < m_numNodes; ++node ) { for ( NodeIterator node = 0; node < m_numNodes; ++node ) {

View File

@ -100,6 +100,7 @@ public:
template<typename EdgeT> template<typename EdgeT>
void ConstructGrid(std::vector<EdgeT> & edgeList, char * ramIndexOut, char * fileIndexOut) { void ConstructGrid(std::vector<EdgeT> & edgeList, char * ramIndexOut, char * fileIndexOut) {
//TODO: Implement this using STXXL-Streams
#ifndef ROUTED #ifndef ROUTED
Percent p(edgeList.size()); Percent p(edgeList.size());
BOOST_FOREACH(EdgeT & edge, edgeList) { BOOST_FOREACH(EdgeT & edge, edgeList) {
@ -298,7 +299,7 @@ private:
return (std::fabs(d1 - d2) < 0.0001); return (std::fabs(d1 - d2) < 0.0001);
} }
unsigned FillCell(std::vector<GridEntry>& entriesWithSameRAMIndex, unsigned long fileOffset ) { unsigned FillCell(std::vector<GridEntry>& entriesWithSameRAMIndex, const unsigned long fileOffset ) {
vector<char> tmpBuffer(32*32*4096,0); vector<char> tmpBuffer(32*32*4096,0);
unsigned long indexIntoTmpBuffer = 0; unsigned long indexIntoTmpBuffer = 0;
unsigned numberOfWrittenBytes = 0; unsigned numberOfWrittenBytes = 0;
@ -373,7 +374,7 @@ private:
++counter; ++counter;
} }
BOOST_FOREACH(GridEntry entry, vectorWithSameFileIndex) { BOOST_FOREACH(const GridEntry & entry, vectorWithSameFileIndex) {
char * data = (char *)&(entry.edge); char * data = (char *)&(entry.edge);
for(unsigned i = 0; i < sizeof(_GridEdge); ++i) { for(unsigned i = 0; i < sizeof(_GridEdge); ++i) {
tmpBuffer[index+counter] = data[i]; tmpBuffer[index+counter] = data[i];
@ -419,7 +420,7 @@ private:
localStream->read((char *)&result[currentSizeOfResult], lengthOfBucket*sizeof(_GridEdge)); localStream->read((char *)&result[currentSizeOfResult], lengthOfBucket*sizeof(_GridEdge));
} }
void AddEdge(_GridEdge edge) { void AddEdge(const _GridEdge & edge) {
#ifndef ROUTED #ifndef ROUTED
std::vector<BresenhamPixel> indexList; std::vector<BresenhamPixel> indexList;
GetListOfIndexesForEdgeAndGridSize(edge.startCoord, edge.targetCoord, indexList); GetListOfIndexesForEdgeAndGridSize(edge.startCoord, edge.targetCoord, indexList);
@ -468,7 +469,7 @@ private:
return (p-x)*(p-x) + (q-y)*(q-y); return (p-x)*(p-x) + (q-y)*(q-y);
} }
void GetListOfIndexesForEdgeAndGridSize(_Coordinate& start, _Coordinate& target, std::vector<BresenhamPixel> &indexList) { void GetListOfIndexesForEdgeAndGridSize(const _Coordinate& start, const _Coordinate& target, std::vector<BresenhamPixel> &indexList) {
double lat1 = start.lat/100000.; double lat1 = start.lat/100000.;
double lon1 = start.lon/100000.; double lon1 = start.lon/100000.;