#include <NCollection_DataMap.hxx>
#include <NCollection_List.hxx>
#include <NCollection_Vector.hxx>
+
+#include <Message_ProgressIndicator.hxx>
+
#include <TColStd_MapIntegerHasher.hxx>
#include <TopAbs.hxx>
#include <TopExp.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_MapOfOrientedShape.hxx>
#include <TopTools_MapOfShape.hxx>
+//-----------------------------------------------------------
+#include <OSD_Timer.hxx>
+//-----------------------------------------------------------
//
static
//=======================================================================
void BOPAlgo_BuilderSolid::Perform(const Message_ProgressRange& theRange)
{
+ //Timer construction
+ //---------------------------------------------------------------------
+ OSD_Timer DurationTimer;
+ //---------------------------------------------------------------------
+
+ DurationTimer.Start();
+
GetReport()->Clear();
//
if (myShapes.IsEmpty())
myBoxes.Clear();
+ DurationTimer.Stop();
+ std::cout << "Prelim. duration: " << DurationTimer.ElapsedTime() << std::endl;
+
TopoDS_Compound aC;
BRep_Builder aBB;
TopTools_ListIteratorOfListOfShape aIt;
//
+ DurationTimer.Restart();
aBB.MakeCompound(aC);
+ DurationTimer.Stop();
+ std::cout << "MakeCompound duration: " << DurationTimer.ElapsedTime() << std::endl;
+
+ DurationTimer.Restart();
aIt.Initialize(myShapes);
+ DurationTimer.Stop();
+ std::cout << "Initialize duration: " << DurationTimer.ElapsedTime() << std::endl;
+
+ DurationTimer.Restart();
for(; aIt.More(); aIt.Next()) {
const TopoDS_Shape& aF=aIt.Value();
aBB.Add(aC, aF);
}
+ DurationTimer.Stop();
+ std::cout << "ItLoop duration: " << DurationTimer.ElapsedTime() << std::endl;
//
if (!theRange.More())
{
return;
}
//
+ DurationTimer.Restart();
PerformShapesToAvoid();
+ DurationTimer.Stop();
+ std::cout << "PerformShapesToAvoid duration: " << DurationTimer.ElapsedTime() << std::endl;
if (HasErrors()) {
return;
}
return;
}
//
+ DurationTimer.Restart();
PerformLoops();
+ DurationTimer.Stop();
+ std::cout << "PerformLoops duration: " << DurationTimer.ElapsedTime() << std::endl;
if (HasErrors()) {
return;
}
return;
}
//
+ DurationTimer.Restart();
PerformAreas();
+ DurationTimer.Stop();
+ std::cout << "PerformAreas duration: " << DurationTimer.ElapsedTime() << std::endl;
if (HasErrors()) {
return;
}
return;
}
//
+ DurationTimer.Restart();
PerformInternalShapes();
+ DurationTimer.Stop();
+ std::cout << "PerformInternalShapes duration: " << DurationTimer.ElapsedTime() << std::endl;
if (HasErrors()) {
return;
}