Salome HOME
0022082: EDF 1891 SMESH: Performance issues in SMESH filters
authoreap <eap@opencascade.com>
Tue, 29 Jan 2013 15:14:57 +0000 (15:14 +0000)
committereap <eap@opencascade.com>
Tue, 29 Jan 2013 15:14:57 +0000 (15:14 +0000)
In MapCells(SALOME_Actor*,const TColStd_IndexedMapOfInteger& theMap),
move the following code out of the loop on theMap

   UnShrink();
   if(theMapActor->IsShrunk()){
     SetShrinkFactor(theMapActor->GetShrinkFactor());
   }
   myMapIndex = theMap;

src/OBJECT/SMESH_SVTKActor.cxx

index 0158f7f918dfbbbc26e4d12da893e76fe611eeda..48ad8691026d940a2383031b614ba60cd0d10943 100644 (file)
@@ -124,29 +124,32 @@ SMESH_SVTKActor
   for(int ind = 1; ind <= aNbOfParts; ind++){
     int aPartId = theMapIndex( ind );
     if(vtkCell* aCell = theMapActor->GetElemCell(aPartId))
-      {
+    {
 #if VTK_XVERSION > 50700
       if (aCell->GetCellType() != VTK_POLYHEDRON)
 #endif
-      if(aCell->GetCellType() == VTK_VERTEX ) {
-        my0DGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds());
-      } else if(aCell->GetCellType() == VTK_POLY_VERTEX ) {
-        myBallGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds());
-      } else {
-        myUnstructuredGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds());
+      {
+        if(aCell->GetCellType() == VTK_VERTEX ) {
+          my0DGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds());
+        } else if(aCell->GetCellType() == VTK_POLY_VERTEX ) {
+          myBallGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds());
+        } else {
+          myUnstructuredGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds());
+        }
       }
 #if VTK_XVERSION > 50700
       else
-        {
-          vtkPolyhedron *polyhedron = dynamic_cast<vtkPolyhedron*>(aCell);
-          if (!polyhedron)
-            throw SALOME_Exception(LOCALIZED ("not a polyhedron"));
-          vtkIdType *pts = polyhedron->GetFaces();
-          myUnstructuredGrid->InsertNextCell(aCell->GetCellType(),pts[0], pts+1);
-        }
-#endif
+      {
+        vtkPolyhedron *polyhedron = dynamic_cast<vtkPolyhedron*>(aCell);
+        if (!polyhedron)
+          throw SALOME_Exception(LOCALIZED ("not a polyhedron"));
+        vtkIdType *pts = polyhedron->GetFaces();
+        myUnstructuredGrid->InsertNextCell(aCell->GetCellType(),pts[0], pts+1);
       }
-    
+#endif
+    }
+  }
+
   UnShrink();
   if(theMapActor->IsShrunk()){
     SetShrinkFactor(theMapActor->GetShrinkFactor());
@@ -154,9 +157,8 @@ SMESH_SVTKActor
   }
 
   myMapIndex = theMapIndex;
-  }
 }
-  
+
 void
 SMESH_SVTKActor
 ::Initialize()