MantisBT - Open CASCADE
View Issue Details
0030435Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2019-01-10 13:052019-04-27 13:08
ifv 
ifv 
normalminor 
verifiedfixed 
[OCCT] 7.4.0* 
[OCCT] 7.4.0* 
perf/moddata/bug30435
0030435: Improving performance of Approx_ComputeCLine
Algorithm, implemented in Approx_ComputeCLine (approximation of continuous parametric function) is wide used in projection algorithm.
test perf moddata bug30435
No tags attached.
related to 0027651assigned ifv Modeling Algorithms - Add projection support in sewing pcurves handling 
related to 0027711assigned msv Blend-on-blend corrupts the shape 
Issue History
2019-01-10 13:05ifvNew Issue
2019-01-10 13:05ifvAssigned To => ifv
2019-01-10 13:06ifvRelationship addedrelated to 0027651
2019-01-10 13:07ifvStatusnew => assigned
2019-01-10 13:11gitNote Added: 0081712
2019-01-11 15:24gitNote Added: 0081754
2019-01-15 16:48gitNote Added: 0081786
2019-01-18 16:21gitNote Added: 0081818
2019-01-21 16:22gitNote Added: 0081852
2019-01-25 16:39gitNote Added: 0081882
2019-01-28 11:58gitNote Added: 0081904
2019-01-29 17:41gitNote Added: 0081919
2019-02-05 15:23gitNote Added: 0082037
2019-02-05 17:38ifvNote Added: 0082038
2019-02-05 17:38ifvAssigned Toifv => msv
2019-02-05 17:38ifvStatusassigned => resolved
2019-02-05 17:38ifvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=20631#r20631
2019-02-08 16:44msvRelationship addedrelated to 0027711
2019-02-08 16:57msvNote Added: 0082092
2019-02-08 16:57msvAssigned Tomsv => ifv
2019-02-08 16:57msvStatusresolved => assigned
2019-02-15 16:31gitNote Added: 0082199
2019-03-05 17:02gitNote Added: 0082697
2019-04-02 12:19gitNote Added: 0083356
2019-04-05 17:14gitNote Added: 0083441
2019-04-08 11:37gitNote Added: 0083476
2019-04-08 14:16ifvNote Added: 0083520
2019-04-08 14:16ifvAssigned Toifv => msv
2019-04-08 14:16ifvStatusassigned => resolved
2019-04-08 18:29msvNote Added: 0083537
2019-04-08 18:30msvAssigned Tomsv => ifv
2019-04-08 18:30msvStatusresolved => assigned
2019-04-19 11:44gitNote Added: 0083875
2019-04-19 16:22ifvNote Added: 0083883
2019-04-19 16:22ifvAssigned Toifv => msv
2019-04-19 16:22ifvStatusassigned => resolved
2019-04-22 11:20msvAssigned Tomsv => ifv
2019-04-22 11:20msvStatusresolved => assigned
2019-04-22 14:10gitNote Added: 0083929
2019-04-22 16:10ifvNote Added: 0083932
2019-04-22 16:10ifvAssigned Toifv => msv
2019-04-22 16:10ifvStatusassigned => resolved
2019-04-22 16:33msvNote Added: 0083934
2019-04-22 16:33msvAssigned Tomsv => bugmaster
2019-04-22 16:33msvStatusresolved => reviewed
2019-04-22 19:17bugmasterTest case number => perf/moddata/bug30435
2019-04-22 19:21bugmasterNote Added: 0083936
2019-04-22 19:21bugmasterStatusreviewed => tested
2019-04-27 12:38ifvChangeset attached => occt master ba7f665d
2019-04-27 12:38ifvAssigned Tobugmaster => ifv
2019-04-27 12:38ifvStatustested => verified
2019-04-27 12:38ifvResolutionopen => fixed
2019-04-27 13:08gitNote Added: 0084028

Notes
(0081712)
git   
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   
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   
2019-01-15 16:48   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: 886844df71a7c4b3920fbd46520917aae331b4e4
(0081818)
git   
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   
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   
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   
2019-01-28 11:58   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: 1c9b639ff29a80171ffbf33b2d2d020b4c2d8b51
(0081919)
git   
2019-01-29 17:41   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: 83cd458533ce0b45ee24dc5586c60c2aa25e6188
(0082037)
git   
2019-02-05 15:23   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: c7e3522a5d38505f71227db84a1bee0b2f9700c5
(0082038)
ifv   
2019-02-05 17:38   
Branch CR300435 is ready for review

See CR30435-master-IFV for test results
(0082092)
msv   
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   
2019-02-15 16:31   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: c88524a3c114f34c196f4b4e843f722a5ef47269
(0082697)
git   
2019-03-05 17:02   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: a12d40a5d15023fc4085fad1e8d9e1620d46c514
(0083356)
git   
2019-04-02 12:19   
Branch CR30435 has been deleted by ifv.

SHA-1: a12d40a5d15023fc4085fad1e8d9e1620d46c514
(0083441)
git   
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   
2019-04-08 11:37   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: 28d87c06bc7eadface8d9d3fe5de25b602b644df
(0083520)
ifv   
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   
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   
2019-04-19 11:44   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: 1eec944a238d99679e7a388a203e34c15624d6c4
(0083883)
ifv   
2019-04-19 16:22   
CR30435 is ready for review
(0083929)
git   
2019-04-22 14:10   
Branch CR30435 has been updated forcibly by ifv.

SHA-1: ba7f665dce92eb21ac0031497558d14de17fa4d3
(0083932)
ifv   
2019-04-22 16:10   
CR30435 is updated according to remarks
(0083934)
msv   
2019-04-22 16:33   
Reviewed.
(0083936)
bugmaster   
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   
2019-04-27 13:08   
Branch CR30435 has been deleted by inv.

SHA-1: ba7f665dce92eb21ac0031497558d14de17fa4d3