From 1b1023179fa4dc1fe89de8d0b04b728d3d637b7b Mon Sep 17 00:00:00 2001 From: "T.Alderighi" Date: Wed, 11 Dec 2019 10:25:48 +0100 Subject: [PATCH] adding reserve on vectors causes huge speedup, especially for algorithms that heavily rely on these subroutines --- vcg/simplex/face/topology.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/vcg/simplex/face/topology.h b/vcg/simplex/face/topology.h index 08175afe..01ffa8ee 100644 --- a/vcg/simplex/face/topology.h +++ b/vcg/simplex/face/topology.h @@ -661,10 +661,10 @@ bool CheckFlipEdge(FaceType &f, int z) template void FlipEdge(FaceType &f, const int z) { - assert(z>=0); - assert(z<3); - assert( !IsBorder(f,z) ); - assert( face::IsManifold(f, z)); + assert(z>=0); + assert(z<3); + assert( !IsBorder(f,z) ); + assert( face::IsManifold(f, z)); FaceType *g = f.FFp(z); // The other face int w = f.FFi(z); // and other side @@ -796,6 +796,7 @@ void VVStarVF( typename FaceType::VertexType* vp, std::vector vfi(vp); while(!vfi.End()) { @@ -860,6 +861,8 @@ void VFStarVF( typename FaceType::VertexType* vp, { faceVec.clear(); indexes.clear(); + faceVec.reserve(16); + indexes.reserve(16); face::VFIterator vfi(vp); while(!vfi.End()) { @@ -988,6 +991,7 @@ void VVOrderedStarFF(Pos &startPos, std::vector &vertexVec) { vertexVec.clear(); + vertexVec.reserve(16); std::vector > posVec; VFOrderedStarFF(startPos,posVec); for(size_t i=0;i &startPos, std::vector > &posVec) { posVec.clear(); + posVec.reserve(16); bool foundBorder=false; size_t firstBorderInd; Pos curPos=startPos; @@ -1050,6 +1055,8 @@ void VFOrderedStarFF(const Pos &startPos, VFOrderedStarFF(startPos,posVec); faceVec.clear(); edgeVec.clear(); + faceVec.reserve(16); + edgeVec.reserve(16); for(size_t i=0;i