MantisBT
Mantis Bug Tracker Workflow

View Issue Details Jump to Notes ] Related Changesets ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0030435Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2019-01-10 13:052019-04-27 13:08
Reporterifv 
Assigned Toifv 
PrioritynormalSeverityminor 
StatusverifiedResolutionfixed 
PlatformOSOS Version
Product Version[OCCT] 7.4.0* 
Target Version[OCCT] 7.4.0*Fixed in Version 
Summary0030435: Improving performance of Approx_ComputeCLine
DescriptionAlgorithm, implemented in Approx_ComputeCLine (approximation of continuous parametric function) is wide used in projection algorithm.
Steps To Reproducetest perf moddata bug30435
TagsNo tags attached.
Test case numberperf/moddata/bug30435
Attached Files

- Relationships
related to 0027651assignedifv Modeling Algorithms - Add projection support in sewing pcurves handling 
related to 0027711assignedmsv Blend-on-blend corrupts the shape 

-  Notes
(0081712)
git (administrator)
2019-01-10 13:11

Branch CR30435 has been created by ifv.

SHA-1: 995e77f66621cd2f9e3370ba9d59bff9f1ab5302


Detailed log of new commits:

Author: ifv
Date: Thu Jan 10 13:07:01 2019 +0300

    0030435: Improving performance of Approx_ComputeCLine
(0081754)
git (administrator)
2019-01-11 15:24

Branch CR30435 has been updated by ifv.

SHA-1: 027e964478c09a312c5942eb06bb3e500c459ec9


Detailed log of new commits:

Author: ifv
Date: Fri Jan 11 15:20:17 2019 +0300

    Fix regression 1

(0081786)
git (administrator)
2019-01-15 16:48

Branch CR30435 has been updated forcibly by ifv.

SHA-1: 886844df71a7c4b3920fbd46520917aae331b4e4
(0081818)
git (administrator)
2019-01-18 16:21

Branch CR30435 has been updated by ifv.

SHA-1: 00494f92e2ea7a98370de5f6c580abae58eccc15


Detailed log of new commits:

Author: ifv
Date: Fri Jan 18 16:14:56 2019 +0300

    Fix for performance problems (boolean volumemaker E4, E5, E6)

(0081852)
git (administrator)
2019-01-21 16:22

Branch CR30435 has been updated by ifv.

SHA-1: adb7a48a2e5b314c383f3ec7d0aedb94d9b36acd


Detailed log of new commits:

Author: ifv
Date: Mon Jan 21 16:17:08 2019 +0300

    Fix for boolean volumemaker E6

Author: ifv
Date: Mon Jan 21 09:36:18 2019 +0300

    Revert "Fix for performance problems (boolean volumemaker E4, E5, E6)"
    
    This reverts commit 00494f92e2ea7a98370de5f6c580abae58eccc15.

(0081882)
git (administrator)
2019-01-25 16:39

Branch CR30435 has been updated by ifv.

SHA-1: aa63e31beb706d6a860bbe8776bbee4c091ced70


Detailed log of new commits:

Author: ifv
Date: Fri Jan 25 16:32:58 2019 +0300

    Fix some bugs

(0081904)
git (administrator)
2019-01-28 11:58

Branch CR30435 has been updated forcibly by ifv.

SHA-1: 1c9b639ff29a80171ffbf33b2d2d020b4c2d8b51
(0081919)
git (administrator)
2019-01-29 17:41

Branch CR30435 has been updated forcibly by ifv.

SHA-1: 83cd458533ce0b45ee24dc5586c60c2aa25e6188
(0082037)
git (administrator)
2019-02-05 15:23

Branch CR30435 has been updated forcibly by ifv.

SHA-1: c7e3522a5d38505f71227db84a1bee0b2f9700c5
(0082038)
ifv (developer)
2019-02-05 17:38

Branch CR300435 is ready for review

See CR30435-master-IFV for test results
(0082092)
msv (developer)
2019-02-08 16:57

src/Approx/Approx_ComputeCLine.gxx
- 414: incorrect comment
- 312: it seems must be "deg == mydegremin"

src/Approx/Approx_FitAndDivide.hxx
- 67: Actually myInvOrder is true by default, it is worth to tell it here.

src/IntTools/IntTools_EdgeEdge.cxx
- 228: please add comment for this code (copy from commit).

tests/perf/moddata/bug30435
- Put bug title along with its number.

tests/lowalgos/intss/bug27263
- Add check of length of the second curve.

What is the performance gain of this fix. Can you give some figures?
(0082199)
git (administrator)
2019-02-15 16:31

Branch CR30435 has been updated forcibly by ifv.

SHA-1: c88524a3c114f34c196f4b4e843f722a5ef47269
(0082697)
git (administrator)
2019-03-05 17:02

Branch CR30435 has been updated forcibly by ifv.

SHA-1: a12d40a5d15023fc4085fad1e8d9e1620d46c514
(0083356)
git (administrator)
2019-04-02 12:19

Branch CR30435 has been deleted by ifv.

SHA-1: a12d40a5d15023fc4085fad1e8d9e1620d46c514
(0083441)
git (administrator)
2019-04-05 17:14

Branch CR30435 has been created by ifv.

SHA-1: de9574633fe91ada6dfa35fea248123bc87b4c2a


Detailed log of new commits:

Author: ifv
Date: Thu Jan 10 13:07:01 2019 +0300

    0030435: Improving performance of Approx_ComputeCLine
    
    1. Approx_ComputeCLine.gxx, Approx_FitAndDivide.hxx, Approx_FitAndDivide2d.hxx, BRepFill_ComputeCLine.hxx
    It is base modification, which allows improve performance of approximation with help of Approx_ComputeCLine.
    
    2. ProjLib_ComputeApprox, ProjLib_ComputeApproxOnPolarSurface, ProjLib_ComputeApproxOnPolarSurface, ProjLib_ProjectOnPlane
    It is additional modification of methods using Approx_ComputeCLine.
    
    3. BRepCheck_Face
    Small improvement of method Intersect(...), which intersects two wires on face.
    
    4. BRepTopAdaptor_FClass2d
    Impovement of treatment infinitely narrow faces.
    
    5. ChFi3d/ChFi3d_Builder_6.cxx
    Small improvement, which forbids extension of singular boundary of surface.
    It was TODO problem in tests/bugs/modalg_7/bug27711_3
    
    6. IntTools_EdgeEdge.cxx
    Improvement of performance for cases of searching common parts between line and analytical curve
    
    7. GeomliteTest_CurveCommands.cxx
    Adding Draw command fitcurve. This command is analog of approxcurve, but uses Approx_FitAndDivide algorithm.
    Mainly to have direct draw command for testing Approx_ComputeCLine.
    
    8. Extrema_ExtElC.cxx
    
    Treatment of case "infinite solutions" for extrema line-ellipse
    
    9. Modification of some tests according to new behavior of algorithm.
    
    10. tests/perf/moddata/bug30435
    Test for new improved algorithm.
    
    11. Implementation QAcommand OCC40435 in QABugs_20.cxx used in test bug30435
(0083476)
git (administrator)
2019-04-08 11:37

Branch CR30435 has been updated forcibly by ifv.

SHA-1: 28d87c06bc7eadface8d9d3fe5de25b602b644df
(0083520)
ifv (developer)
2019-04-08 14:16

CR30435 is ready for review.
Results is CR30435-master-IFV
Improving:
there are 14 tests with improving performance > then 50% (see CPU difference)
According to test perf moddata bug30435 improving of performance is
3.86 times for Win
4.375 for Lin
(0083537)
msv (developer)
2019-04-08 18:29

Commit message:

>1. Approx_ComputeCLine.gxx, Approx_FitAndDivide.hxx, Approx_FitAndDivide2d.hxx, BRepFill_ComputeCLine.hxx
>It is base modification, which allows improve performance of approximation with help of Approx_ComputeCLine.
It is needed to point the main idea of changes.

>2. ProjLib_ComputeApprox, ProjLib_ComputeApproxOnPolarSurface, ProjLib_ComputeApproxOnPolarSurface, ProjLib_ProjectOnPlane
>It is additional modification of methods using Approx_ComputeCLine.
It is needed to point the main idea of changes.

>11. Implementation QAcommand OCC40435 in QABugs_20.cxx used in test bug30435
Misprint OCC40435.

src/Approx/Approx_FitAndDivide.hxx and others:
- Make description of SetInvOrder the same in all headers.
- Please describe which value of InvOrder is used by default.

src/Extrema/Extrema_ExtElC.cxx
- replace tabs with spaces in the added code.

src/IntTools/IntTools_EdgeEdge.cxx
- replace tabs with spaces in the added code.

tests/perf/moddata/bug30435
- Give the second counter unique name like OCC30435_1.

Why the following test showed worse performance (both Windows and Linux)?
CPU ifc doc_1 B4: 2102.78125 / 830.6875 [+153.14%]
(0083875)
git (administrator)
2019-04-19 11:44

Branch CR30435 has been updated forcibly by ifv.

SHA-1: 1eec944a238d99679e7a388a203e34c15624d6c4
(0083883)
ifv (developer)
2019-04-19 16:22

CR30435 is ready for review
(0083929)
git (administrator)
2019-04-22 14:10

Branch CR30435 has been updated forcibly by ifv.

SHA-1: ba7f665dce92eb21ac0031497558d14de17fa4d3
(0083932)
ifv (developer)
2019-04-22 16:10

CR30435 is updated according to remarks
(0083934)
msv (developer)
2019-04-22 16:33

Reviewed.
(0083936)
bugmaster (administrator)
2019-04-22 19:21

Combination -
OCCT branch : CR30435
master SHA - ba7f665dce92eb21ac0031497558d14de17fa4d3
d67d4b811012eef8913d3c535c29654d0acf3c4c
Products branch : master SHA - 8518fc0ce61f27cb5fd038357f978ec6e3a20df5
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:
Debian80-64:
OCCT
Total CPU difference: 16328.27999999997 / 16536.609999999906 [-1.26%]
Products
Total CPU difference: 10520.86000000006 / 10546.95000000005 [-0.25%]
Windows-64-VC14:
OCCT
Total CPU difference: 17662.578125 / 17960.6875 [-1.66%]
Products
Total CPU difference: 12066.265625 / 12065.3125 [+0.01%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention
(0084028)
git (administrator)
2019-04-27 13:08

Branch CR30435 has been deleted by inv.

SHA-1: ba7f665dce92eb21ac0031497558d14de17fa4d3

- Related Changesets
occt: master ba7f665d
Timestamp: 2019-01-10 10:07:01
Author: ifv
Details ] Diff ]
0030435: Improving performance of Approx_ComputeCLine

1. Approx_ComputeCLine.gxx, Approx_FitAndDivide.hxx, Approx_FitAndDivide2d.hxx, BRepFill_ComputeCLine.hxx
It is base modification, which allows improve performance of approximation with help of Approx_ComputeCLine. The main idea of improvement is using degree selection by inverse order - from maxdegree to mindegree. If tolerance for maxdegree is not reached, there is no sense to make approximation for current number of knots with lower degree, it is necessary to cut parametric interval.

2. ProjLib_ComputeApprox, ProjLib_ComputeApproxOnPolarSurface, ProjLib_ComputeApproxOnPolarSurface, ProjLib_ProjectOnPlane
It is additional modification of methods using Approx_ComputeCLine.
Mainly, modifications concern to more optimal choosing parameters for approximation algorithm.

3. BRepCheck_Face
Small improvement of method Intersect(...), which intersects two wires on face.

4. BRepTopAdaptor_FClass2d
Impovement of treatment infinitely narrow faces.

5. ChFi3d/ChFi3d_Builder_6.cxx
Small improvement, which forbids extension of singular boundary of surface.
It was TODO problem in tests/bugs/modalg_7/bug27711_3

6. IntTools_EdgeEdge.cxx
Improvement of performance for cases of searching common parts between line and analytical curve

7. GeomliteTest_CurveCommands.cxx
Adding Draw command fitcurve. This command is analog of approxcurve, but uses Approx_FitAndDivide algorithm.
Mainly to have direct draw command for testing Approx_ComputeCLine.

8. Extrema_ExtElC.cxx

Treatment of case "infinite solutions" for extrema line-ellipse

9. Modification of some tests according to new behavior of algorithm.

10. tests/perf/moddata/bug30435
Test for new improved algorithm.

11. Implementation QAcommand OCC30435 in QABugs_20.cxx used in test bug30435
mod - src/Approx/Approx_ComputeCLine.gxx Diff ] File ]
mod - src/Approx/Approx_FitAndDivide.hxx Diff ] File ]
mod - src/Approx/Approx_FitAndDivide2d.hxx Diff ] File ]
mod - src/BRepCheck/BRepCheck_Face.cxx Diff ] File ]
mod - src/BRepFill/BRepFill_ComputeCLine.hxx Diff ] File ]
mod - src/BRepTopAdaptor/BRepTopAdaptor_FClass2d.cxx Diff ] File ]
mod - src/ChFi3d/ChFi3d_Builder_6.cxx Diff ] File ]
mod - src/Extrema/Extrema_ExtElC.cxx Diff ] File ]
mod - src/GeomliteTest/GeomliteTest_CurveCommands.cxx Diff ] File ]
mod - src/IntTools/IntTools_EdgeEdge.cxx Diff ] File ]
mod - src/ProjLib/ProjLib_ComputeApprox.cxx Diff ] File ]
mod - src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx Diff ] File ]
mod - src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.hxx Diff ] File ]
mod - src/ProjLib/ProjLib_ProjectOnPlane.cxx Diff ] File ]
mod - src/QABugs/QABugs_20.cxx Diff ] File ]
mod - tests/bugs/mesh/bug30008_2 Diff ] File ]
mod - tests/bugs/modalg_7/bug27711_3 Diff ] File ]
mod - tests/de/step_4/D9 Diff ] File ]
mod - tests/de/step_4/E1 Diff ] File ]
mod - tests/lowalgos/intss/bug27263 Diff ] File ]
add - tests/perf/moddata/bug30435 Diff ] File ]

- Issue History
Date Modified Username Field Change
2019-01-10 13:05 ifv New Issue
2019-01-10 13:05 ifv Assigned To => ifv
2019-01-10 13:06 ifv Relationship added related to 0027651
2019-01-10 13:07 ifv Status new => assigned
2019-01-10 13:11 git Note Added: 0081712
2019-01-11 15:24 git Note Added: 0081754
2019-01-15 16:48 git Note Added: 0081786
2019-01-18 16:21 git Note Added: 0081818
2019-01-21 16:22 git Note Added: 0081852
2019-01-25 16:39 git Note Added: 0081882
2019-01-28 11:58 git Note Added: 0081904
2019-01-29 17:41 git Note Added: 0081919
2019-02-05 15:23 git Note Added: 0082037
2019-02-05 17:38 ifv Note Added: 0082038
2019-02-05 17:38 ifv Assigned To ifv => msv
2019-02-05 17:38 ifv Status assigned => resolved
2019-02-05 17:38 ifv Steps to Reproduce Updated View Revisions
2019-02-08 16:44 msv Relationship added related to 0027711
2019-02-08 16:57 msv Note Added: 0082092
2019-02-08 16:57 msv Assigned To msv => ifv
2019-02-08 16:57 msv Status resolved => assigned
2019-02-15 16:31 git Note Added: 0082199
2019-03-05 17:02 git Note Added: 0082697
2019-04-02 12:19 git Note Added: 0083356
2019-04-05 17:14 git Note Added: 0083441
2019-04-08 11:37 git Note Added: 0083476
2019-04-08 14:16 ifv Note Added: 0083520
2019-04-08 14:16 ifv Assigned To ifv => msv
2019-04-08 14:16 ifv Status assigned => resolved
2019-04-08 18:29 msv Note Added: 0083537
2019-04-08 18:30 msv Assigned To msv => ifv
2019-04-08 18:30 msv Status resolved => assigned
2019-04-19 11:44 git Note Added: 0083875
2019-04-19 16:22 ifv Note Added: 0083883
2019-04-19 16:22 ifv Assigned To ifv => msv
2019-04-19 16:22 ifv Status assigned => resolved
2019-04-22 11:20 msv Assigned To msv => ifv
2019-04-22 11:20 msv Status resolved => assigned
2019-04-22 14:10 git Note Added: 0083929
2019-04-22 16:10 ifv Note Added: 0083932
2019-04-22 16:10 ifv Assigned To ifv => msv
2019-04-22 16:10 ifv Status assigned => resolved
2019-04-22 16:33 msv Note Added: 0083934
2019-04-22 16:33 msv Assigned To msv => bugmaster
2019-04-22 16:33 msv Status resolved => reviewed
2019-04-22 19:17 bugmaster Test case number => perf/moddata/bug30435
2019-04-22 19:21 bugmaster Note Added: 0083936
2019-04-22 19:21 bugmaster Status reviewed => tested
2019-04-27 12:38 ifv Changeset attached => occt master ba7f665d
2019-04-27 12:38 ifv Assigned To bugmaster => ifv
2019-04-27 12:38 ifv Status tested => verified
2019-04-27 12:38 ifv Resolution open => fixed
2019-04-27 13:08 git Note Added: 0084028


Copyright © 2000 - 2019 MantisBT Team
Powered by Mantis Bugtracker