]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
[bos #39269] Do not integrate this commit, it is just to test performance. jfa/39269_Shaper_too_slow_2
authorjfa <jfa@opencascade.com>
Mon, 18 Dec 2023 18:14:04 +0000 (18:14 +0000)
committerjfa <jfa@opencascade.com>
Mon, 18 Dec 2023 18:14:04 +0000 (18:14 +0000)
src/Model/Model_Document.cpp
src/Model/Model_Document.h
src/Model/Model_Objects.cpp
src/Model/Model_Objects.h
src/ModelAPI/ModelAPI_Document.h

index 5f8b9fe5352101baec03b6e592d4e7737e744bd9..b3406a4bcabfaeb75f084181d0d17f3d5d42d0a9 100644 (file)
@@ -1660,6 +1660,11 @@ bool Model_Document::removeFromFolder(
   return myObjs->removeFromFolder(theFeatures, theBefore);
 }
 
+void Model_Document::setCreateHistory(const bool isToCreateHistory)
+{
+  myObjs->myCreateHistory = isToCreateHistory;
+}
+
 std::shared_ptr<ModelAPI_Feature> Model_Document::feature(
     const std::shared_ptr<ModelAPI_Result>& theResult)
 {
index 1dec08f14434d02d8557ee83fd2b936cb8f6dabe..f66824e25b1cd979b15f9ad52f6b546ff0ed1805 100644 (file)
@@ -267,6 +267,10 @@ class Model_Document : public ModelAPI_Document
       const std::list<std::shared_ptr<ModelAPI_Feature> >& theFeatures,
       const bool theBefore = true);
 
+  //! Set create or not history flag (for performance reasons)
+  //! If flag is false, history in not created and Object Browser will not contain any objects
+  MODEL_EXPORT virtual void setCreateHistory(const bool isToCreateHistory);
+
   ///! Returns true if parametric updater need to execute feature on recomputation
   ///! On abort, undo or redo it is not necessary: results in document are updated automatically
   bool executeFeatures() {return myExecuteFeatures;}
index ea1c271dfc80ce61a4982107153f5e4487ffdd46..7a0dad95a205dc077c4b9db9eadb62aceb88a1d0 100644 (file)
@@ -96,7 +96,7 @@ static const int TAG_FEATURE_RESULTS = 2;  ///< where the results are located
 /// 0:1:2:N:1 - data of the feature N
 /// 0:1:2:N:2:K:1 - data of the K result of the feature N
 
-Model_Objects::Model_Objects(TDF_Label theMainLab) : myMain(theMainLab)
+Model_Objects::Model_Objects(TDF_Label theMainLab) : myMain(theMainLab), myCreateHistory(true)
 {
 }
 
@@ -452,6 +452,9 @@ void Model_Objects::clearHistory(ObjectPtr theObj)
 
 void Model_Objects::createHistory(const std::string& theGroupID)
 {
+  if (!myCreateHistory)
+    return;
+
   std::map<std::string, std::vector<ObjectPtr> >::iterator aHIter = myHistory.find(theGroupID);
   if (aHIter == myHistory.end()) {
     std::vector<ObjectPtr> aResult;
index 627d3900ee668405a94754a3d260cccf74c7f66b..594eae0dafc279bb90fa74662820d4f296864ed3 100644 (file)
@@ -309,6 +309,9 @@ class Model_Objects
   /// Each array is updated by demand from scratch, by browsing all the features in the history.
   std::map<std::string, std::vector<ObjectPtr> > myHistory;
 
+  /// Flag to create or not history (for performance reason)
+  bool myCreateHistory;
+
   friend class Model_Document;
   friend class Model_Session;
   friend class Model_Update;
index 216ab09f818800e3698571b7ed609f632c2eb810..e29e11990b0a7e154b3ab8c374e77ee154c2f64f 100644 (file)
@@ -223,6 +223,10 @@ public:
       const std::list<std::shared_ptr<ModelAPI_Feature> >& theFeatures,
       const bool theBefore = true) = 0;
 
+  //! Set create or not history flag (for performance reasons)
+  //! If flag is false, history in not created and Object Browser will not contain any objects
+  virtual void setCreateHistory(const bool isToCreateHistory) = 0;
+
   //! Informs the document that it becomes active and some actions must be performed
   virtual void setActive(const bool theFlag) = 0;
   //! Returns true if this document is currently active