Base: Implement TimeElapsed

Some instances of TimeInfo serve the sole purpose of measuring time
duration. Using system time is unfortunate as it returns wall clock,
which is not guaranteed to be monotonic. Replace such a usage with
the new TimeElapsed class based on steady clock.
This commit is contained in:
Ladislav Michl
2024-01-21 19:00:57 +01:00
parent a691d6fcdc
commit d95b56137b
10 changed files with 93 additions and 52 deletions

View File

@@ -1621,7 +1621,7 @@ class CHEXA2Element: public NastranElement
void FemMesh::readNastran(const std::string& Filename)
{
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log("Start: FemMesh::readNastran() =================================\n");
_Mtrx = Base::Matrix4D();
@@ -1699,7 +1699,7 @@ void FemMesh::readNastran(const std::string& Filename)
inputfile.close();
Base::Console().Log(" %f: File read, start building mesh\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// Now fill the SMESH datastructure
SMESHDS_Mesh* meshds = this->myMesh->GetMeshDS();
@@ -1709,12 +1709,13 @@ void FemMesh::readNastran(const std::string& Filename)
it->addToMesh(meshds);
}
Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::Console().Log(" %f: Done \n",
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
}
void FemMesh::readNastran95(const std::string& Filename)
{
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log("Start: FemMesh::readNastran95() =================================\n");
_Mtrx = Base::Matrix4D();
@@ -1825,7 +1826,7 @@ void FemMesh::readNastran95(const std::string& Filename)
inputfile.close();
Base::Console().Log(" %f: File read, start building mesh\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// Now fill the SMESH datastructure
SMESHDS_Mesh* meshds = this->myMesh->GetMeshDS();
@@ -1839,12 +1840,13 @@ void FemMesh::readNastran95(const std::string& Filename)
it->addToMesh(meshds);
}
Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::Console().Log(" %f: Done \n",
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
}
void FemMesh::readAbaqus(const std::string& FileName)
{
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log("Start: FemMesh::readAbaqus() =================================\n");
/*
@@ -1878,12 +1880,13 @@ void FemMesh::readAbaqus(const std::string& FileName)
catch (Py::Exception& e) {
e.clear();
}
Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::Console().Log(" %f: Done \n",
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
}
void FemMesh::readZ88(const std::string& FileName)
{
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log("Start: FemMesh::readZ88() =================================\n");
/*
@@ -1917,7 +1920,8 @@ void FemMesh::readZ88(const std::string& FileName)
catch (Py::Exception& e) {
e.clear();
}
Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::Console().Log(" %f: Done \n",
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
}
void FemMesh::read(const char* FileName)
@@ -2416,7 +2420,7 @@ void FemMesh::writeABAQUS(const std::string& Filename, int elemParam, bool group
void FemMesh::writeZ88(const std::string& FileName) const
{
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log("Start: FemMesh::writeZ88() =================================\n");
/*

View File

@@ -267,7 +267,7 @@ void FemVTKTools::importVTKMesh(vtkSmartPointer<vtkDataSet> dataset, FemMesh* me
FemMesh* FemVTKTools::readVTKMesh(const char* filename, FemMesh* mesh)
{
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log("Start: read FemMesh from VTK unstructuredGrid ======================\n");
Base::FileInfo f(filename);
@@ -301,7 +301,8 @@ FemMesh* FemVTKTools::readVTKMesh(const char* filename, FemMesh* mesh)
}
// Mesh should link to the part feature, in order to set up FemConstraint
Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::Console().Log(" %f: Done \n",
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
return mesh;
}
@@ -543,7 +544,7 @@ void FemVTKTools::exportVTKMesh(const FemMesh* mesh,
void FemVTKTools::writeVTKMesh(const char* filename, const FemMesh* mesh)
{
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log("Start: write FemMesh from VTK unstructuredGrid ======================\n");
Base::FileInfo f(filename);
@@ -561,7 +562,8 @@ void FemVTKTools::writeVTKMesh(const char* filename, const FemMesh* mesh)
Base::Console().Error("file name extension is not supported to write VTK\n");
}
Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::Console().Log(" %f: Done \n",
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
}
@@ -611,7 +613,7 @@ App::DocumentObject* createObjectByType(const Base::Type type)
App::DocumentObject* FemVTKTools::readResult(const char* filename, App::DocumentObject* res)
{
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log(
"Start: read FemResult with FemMesh from VTK file ======================\n");
Base::FileInfo f(filename);
@@ -667,7 +669,8 @@ App::DocumentObject* FemVTKTools::readResult(const char* filename, App::Document
}
pcDoc->recompute();
Base::Console().Log(" %f: Done \n", Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::Console().Log(" %f: Done \n",
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
Base::Console().Log("End: read FemResult with FemMesh from VTK file ======================\n");
return result;
@@ -689,7 +692,7 @@ void FemVTKTools::writeResult(const char* filename, const App::DocumentObject* r
return;
}
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log("Start: write FemResult to VTK unstructuredGrid dataset =======\n");
Base::FileInfo f(filename);
@@ -702,7 +705,7 @@ void FemVTKTools::writeResult(const char* filename, const App::DocumentObject* r
FemVTKTools::exportVTKMesh(&fmesh, grid);
Base::Console().Log(" %f: vtk mesh builder finished\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// result
FemVTKTools::exportFreeCADResult(res, grid);
@@ -719,7 +722,7 @@ void FemVTKTools::writeResult(const char* filename, const App::DocumentObject* r
}
Base::Console().Log(" %f: writing result object to vtk finished\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
Base::Console().Log("End: write FemResult to VTK unstructuredGrid dataset =======\n");
}

View File

@@ -796,7 +796,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
lines->coordIndex.setNum(0);
return;
}
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log(
"Start: ViewProviderFEMMeshBuilder::createMesh() =================================\n");
@@ -834,7 +834,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
std::vector<FemFace> facesHelper(numTries);
Base::Console().Log(" %f: Start build up %i face helper\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()),
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()),
facesHelper.size());
Base::BoundBox3d BndBox;
@@ -1359,7 +1359,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
if (FaceSize < MaxFacesShowInner) {
Base::Console().Log(" %f: Start eliminate internal faces SIMPLE\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// search for double (inside) faces and hide them
if (!ShowInner) {
@@ -1376,7 +1376,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
}
else {
Base::Console().Log(" %f: Start eliminate internal faces GRID\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
BndBox.Enlarge(BndBox.CalcDiagonalLength() / 10000.0);
// calculate grid properties
double edge = pow(FaceSize, 1.0 / 3.0);
@@ -1444,7 +1444,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
Base::Console().Log(" %f: Start build up node map\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// sort out double nodes and build up index map
std::map<const SMDS_MeshNode*, int> mapNodeIndex;
@@ -1477,7 +1477,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
}
}
Base::Console().Log(" %f: Start set point vector\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// set the point coordinates
coords->point.setNum(mapNodeIndex.size());
@@ -1495,7 +1495,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
// count triangle size
Base::Console().Log(" %f: Start count triangle size\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
int triangleCount = 0;
for (int l = 0; l < FaceSize; l++) {
if (!facesHelper[l].hide) {
@@ -1551,7 +1551,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
}
Base::Console().Log(" %f: Start build up triangle vector\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// set the triangle face indices
faces->coordIndex.setNum(4 * triangleCount);
vFaceElementIdx.resize(triangleCount);
@@ -2971,7 +2971,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
faces->coordIndex.finishEditing();
Base::Console().Log(" %f: Start build up edge vector\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// std::map<int,std::set<int> > EdgeMap;
// count edges
int EdgeSize = 0;
@@ -3000,7 +3000,7 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop,
Base::Console().Log(
" %f: Finish =========================================================\n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
}

View File

@@ -186,7 +186,7 @@ void ViewProviderFemMeshPy::setNodeColor(Py::Dict arg)
this->getViewProviderFemMeshPtr()->resetColorByNodeId();
}
else {
Base::TimeInfo Start;
Base::TimeElapsed Start;
Base::Console().Log(
"Start: ViewProviderFemMeshPy::setNodeColor() =================================\n");
// std::map<long,App::Color> NodeColorMap;
@@ -209,12 +209,12 @@ void ViewProviderFemMeshPy::setNodeColor(Py::Dict arg)
App::Color(Py::Float(color[0]), Py::Float(color[1]), Py::Float(color[2]), 0);
}
Base::Console().Log(" %f: Start ViewProviderFemMeshPy::setNodeColor() call \n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
// this->getViewProviderFemMeshPtr()->setColorByNodeId(NodeColorMap);
this->getViewProviderFemMeshPtr()->setColorByNodeId(NodeIds, NodeColors);
Base::Console().Log(" %f: Finish ViewProviderFemMeshPy::setNodeColor() call \n",
Base::TimeInfo::diffTimeF(Start, Base::TimeInfo()));
Base::TimeElapsed::diffTimeF(Start, Base::TimeElapsed()));
}
}