View Issue Details

IDProjectCategoryView StatusLast Update
0029719CommunityOCCT:Modeling Algorithmspublic2019-11-25 09:53
Reporterdrazmyslovich Assigned ToRoman Lygin  
PrioritynormalSeveritytweak 
Status closedResolutionfixed 
PlatformWindowsOSVC++ 2010 
Product Version7.1.0 
Target Version7.4.0Fixed in Version7.4.0 
Summary0029719: Modeling Algorithms - GeomPlate_BuildPlateSurface has no progress information and is not abortable
DescriptionFor the complex cases GeomPlate_BuildPlateSurface takes a lot of time. At the same time it's not abortable and has no progress information. It makes the usage of GeomPlate_BuildPlateSurface in the end-user application is hardly possible - the user thinks, that the program hangs.
Steps To ReproduceN/A
TagsNo tags attached.
Test case numberNot needed

Relationships

parent of 0031190 closedbugmaster Open CASCADE Modeling Algorithms - progress indication in GeomPlate is inconsistent 

Activities

git

2018-04-23 17:52

administrator   ~0075617

Branch CR29719 has been created by drazmyslovich.

SHA-1: 0d4af647dffcfbd65aac91bc58b9c9b2132ab7da


Detailed log of new commits:

Author: drazmyslovich
Date: Mon Apr 23 16:52:43 2018 +0200

    0029719: Enhance GeomPlate_BuildPlateSurface with the progress information and the user break response

drazmyslovich

2018-04-23 17:58

developer   ~0075618

Dear msv! We added the progress indicator as an optional parameter for GeomPlate_BuildPlateSurface and propagated to Plate_Plate class. Unfortunately, we needed to substitute the standard LU decomposition from the math package with a local algorithm, which supports the progress information. We were unsure, if the standard math package is allowed to use the end-user concept of Message_ProgressIndicator, therefore we decided to duplicate the function for the local usage. Thank you.

msv

2018-04-23 19:44

developer   ~0075622

Dear drazmyslovich, thank you for the contribution!

Before passing the patch on the next stage, could you please consider the following remarks:

src/Plate/Plate_Plate.hxx
- replace "#include <Message_ProgressIndicator.hxx>" with declaration "class Message_ProgressIndicator;"

src/GeomPlate/GeomPlate_BuildPlateSurface.cxx
- Please instrument the other calls to SolveTI in lines 703, 1730. For the last, add progress indicator parameter to the method ComputeSurfInit().
- Please make the equal indentation of lines. For that, use "8 spaces per tab character" setting in your editor.

src/Plate/Plate_Plate.cxx
- The package math is located in the toolkit TKMath. The package Message is located in the toolkit TKernel. TKernel has the lowest level. So, it is OK to pass the instance of progress indicator to math classes. So, please avoid code duplication and add progress indicator in math where it is needed.
- I wonder if it is also needed to use progress indicator in the methods math_Gauss::Solve() and Invert(). Don't they take much time?
- The Gauss algo in the lines 561, 664, 930 is to be called with progress indicator as well.
- When you return on user break you should set OK to false, otherwise IsDone() will return true.

git

2018-04-24 09:53

administrator   ~0075632

Branch CR29719 has been updated by drazmyslovich.

SHA-1: 6033b43fad6638f90f6c9348534fe555a6485547


Detailed log of new commits:

Author: drazmyslovich
Date: Tue Apr 24 08:53:07 2018 +0200

    0029719: Code review modifications for the progress information enhancements of GeomPlate_BuildPlateSurface

drazmyslovich

2018-04-24 09:55

developer   ~0075633

Dear msv, I modified the code according to your recommendations. According to our observations the most critical part of math_Gauss is LU decomposition. All other algorithms are quite fast. Please, review the latest state of the branch. Thank you.

msv

2018-04-24 12:55

developer   ~0075647

More remarks:

src/math/math_Recipes.cxx
- Line 188: why max parameter is set to n+1. It should be the number of iterations, i.e. n.
- Line 200: this is extra statement.

src/math/math_Gauss.hxx
- Line 60: Please wrap the line to make it shorter.

src/Plate/Plate_Plate.hxx
- Line 87: Please wrap the line to make it shorter.

src/GeomPlate/GeomPlate_BuildPlateSurface.cxx
- Lines 663-668, 698-726 have inconsistent indentation.

Please form one commit in the new branch CR29719_1 using the following rule for commit message:
1. The first line must be equal to the summary field of the bug.
2. The second line must be empty.
3. The next lines present the description of the fix if it is needed.
4. The other commits (additional) may contain only lines commented with '#' character. Such lines will be ignored by bugmaster when combining to one commit.

Thank you.

git

2018-04-24 13:30

administrator   ~0075648

Branch CR29719_1 has been created by drazmyslovich.

SHA-1: ee968ef614da984086c5835ce0290f26261fe1b6


Detailed log of new commits:

Author: drazmyslovich
Date: Mon Apr 23 16:52:43 2018 +0200

    0029719: Modeling Algorithms - GeomPlate_BuildPlateSurface has no progress information and is not abortable
    
    The Message_ProgressIndicator handle is added as a parameter to the function LU_Decompose and the the member functions of math_Gauss, Plate_Plate and GeomPlate_BuildPlateSurface classes.

drazmyslovich

2018-04-24 13:31

developer   ~0075649

Please, check the new branch CR29719_1

git

2018-04-24 15:07

administrator   ~0075652

Branch CR29719_1 has been updated by msv.

SHA-1: e6c3e277cc198894f9e8f97a596041b51b461418


Detailed log of new commits:

Author: msv
Date: Tue Apr 24 15:06:08 2018 +0300

    #correct indents

msv

2018-04-24 15:12

developer   ~0075653

I have made minor corrections of intentation, and put the patch onto certification testing.
Jenkins job is CR29719-master-msv.

msv

2018-04-25 11:54

developer   ~0075674

Reviewed.

bugmaster

2018-05-23 18:31

administrator   ~0076197

Combination -
OCCT branch : CR29719_1 SHA - e6c3e277cc198894f9e8f97a596041b51b461418
Products branch : master SHA - 4667f5aca4a456ae13db44bc7210e8cac1ab89f0
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian70-64:
OCCT
Total CPU difference: 18234.80999999992 / 18243.73999999987 [-0.05%]
Products
Total CPU difference: 7509.7400000000525 / 7501.010000000052 [+0.12%]
Windows-64-VC10:
OCCT
Total CPU difference: 18226.345634798417 / 18049.78370299853 [+0.98%]
Products
Total CPU difference: 8275.509847799878 / 8220.566295599881 [+0.67%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2018-06-23 13:56

administrator   ~0076933

Branch CR29719 has been deleted by kgv.

SHA-1: 6033b43fad6638f90f6c9348534fe555a6485547

git

2018-06-23 13:56

administrator   ~0076934

Branch CR29719_1 has been deleted by kgv.

SHA-1: e6c3e277cc198894f9e8f97a596041b51b461418

Roman Lygin

2019-11-09 12:42

developer   ~0088822

Adding progress indicator into the lowest level math function should not have been accepted. This will have immediate strong performance penalties as soon as any intrusive progress indicator is used.

Costs of virtual call and checking the status of some GUI widget will add significant overhead to simple loops over matrix rows/columns.

The regression tests did not show performance drop apparently due to using some null/empty progress indicator in the test framework.

Please roll back the modifications from the math kernel. All performance indicators-related stuff may only be used in higher level algorithms (GeomPlate in this case).

Thank you.

abv

2019-11-12 10:45

manager   ~0088901

Last edited: 2019-11-13 10:01

Roman, can you prove that this change actually leads to performance downgrade in some real-world situation (or at least confirm that you actually experience that in your appliaction)?

Indeed we shall assume that progress indicator shall be implemented in reasonable way to avoid stopping in method Show() - otherwise any its usage will lead to performance issues.

If the problem is real, please create separate issue for it.

Related Changesets

occt: master 9f785738

2018-04-23 14:52:43

drazmyslovich


Committer: bugmaster Details Diff
0029719: Modeling Algorithms - GeomPlate_BuildPlateSurface has no progress information and is not abortable

The Message_ProgressIndicator handle is added as a parameter to the function LU_Decompose and the the member functions of math_Gauss, Plate_Plate and GeomPlate_BuildPlateSurface classes.
Affected Issues
0029719
mod - src/GeomPlate/GeomPlate_BuildPlateSurface.cxx Diff File
mod - src/GeomPlate/GeomPlate_BuildPlateSurface.hxx Diff File
mod - src/math/math_Gauss.cxx Diff File
mod - src/math/math_Gauss.hxx Diff File
mod - src/math/math_Recipes.cxx Diff File
mod - src/math/math_Recipes.hxx Diff File
mod - src/Plate/Plate_Plate.cxx Diff File
mod - src/Plate/Plate_Plate.hxx Diff File

Issue History

Date Modified Username Field Change
2018-04-23 17:49 drazmyslovich New Issue
2018-04-23 17:49 drazmyslovich Assigned To => msv
2018-04-23 17:52 git Note Added: 0075617
2018-04-23 17:58 drazmyslovich Note Added: 0075618
2018-04-23 17:58 drazmyslovich Status new => resolved
2018-04-23 19:44 msv Note Added: 0075622
2018-04-23 19:44 msv Assigned To msv => drazmyslovich
2018-04-23 19:44 msv Status resolved => assigned
2018-04-24 09:53 git Note Added: 0075632
2018-04-24 09:55 drazmyslovich Note Added: 0075633
2018-04-24 09:55 drazmyslovich Assigned To drazmyslovich => msv
2018-04-24 09:55 drazmyslovich Status assigned => resolved
2018-04-24 09:57 kgv Summary GeomPlate_BuildPlateSurface has no progress information and is not abortable => Modeling Algorithms - GeomPlate_BuildPlateSurface has no progress information and is not abortable
2018-04-24 12:55 msv Note Added: 0075647
2018-04-24 12:56 msv Assigned To msv => drazmyslovich
2018-04-24 12:56 msv Status resolved => assigned
2018-04-24 13:30 git Note Added: 0075648
2018-04-24 13:31 drazmyslovich Note Added: 0075649
2018-04-24 13:31 drazmyslovich Assigned To drazmyslovich => msv
2018-04-24 13:31 drazmyslovich Status assigned => resolved
2018-04-24 15:07 git Note Added: 0075652
2018-04-24 15:12 msv Note Added: 0075653
2018-04-25 11:54 msv Note Added: 0075674
2018-04-25 11:54 msv Assigned To msv => bugmaster
2018-04-25 11:54 msv Status resolved => reviewed
2018-05-23 18:17 bugmaster Test case number => Not needed
2018-05-23 18:31 bugmaster Note Added: 0076197
2018-05-23 18:31 bugmaster Status reviewed => tested
2018-06-14 18:20 bugmaster Changeset attached => occt master 9f785738
2018-06-14 18:20 bugmaster Status tested => verified
2018-06-14 18:20 bugmaster Resolution open => fixed
2018-06-23 13:56 git Note Added: 0076933
2018-06-23 13:56 git Note Added: 0076934
2019-11-09 12:42 Roman Lygin Assigned To bugmaster => msv
2019-11-09 12:42 Roman Lygin Note Added: 0088822
2019-11-09 12:42 Roman Lygin Status closed => feedback
2019-11-09 12:42 Roman Lygin Resolution fixed => reopened
2019-11-12 10:43 abv Assigned To msv => Roman Lygin
2019-11-12 10:45 abv Note Added: 0088901
2019-11-13 10:01 abv Note Edited: 0088901
2019-11-23 10:20 abv Status feedback => closed
2019-11-23 10:20 abv Resolution reopened => fixed
2019-11-25 09:53 abv Relationship added parent of 0031190