MantisBT - Community
View Issue Details
0026447Community[OCCT] OCCT:Modeling Algorithmspublic2015-07-15 21:032015-10-23 20:50
Aaron Michalk 
bugmaster 
normalmajor 
closedfixed 
WindowsVC++ 201364 bit
[OCCT] 6.9.0 
[OCCT] 6.9.1[OCCT] 6.9.1 
bugs modalg_6 bug26447
0026447: Performance degradation intersecting cylindrical surfaces
Calling IntTools_FaceFace::Perform is significantly slower for two cylindrical surfaces.
Dear testers,

Test for this issue must be bused on script.tcl attached file.

--------------------------------------------------
In Draw Test Harness:

cylinder c1 0 0 0 1 0 0 0 -1 0 100
cylinder c2 0 0 0 0 1 0 1 0 0 100
mkface f1 c1
mkface f2 c2
chrono
bopcurves f1 f2
bopcurves f1 f2
bopcurves f1 f2
chrono

In 6.8.0 I get:

Elapsed time: 0 Hours 0 Minutes 0.00378219620325 Seconds
Elapsed time: 0 Hours 0 Minutes 0.0032868583221 Seconds
Elapsed time: 0 Hours 0 Minutes 0.00376046291785 Seconds

In 6.9.0 I get:

Elapsed time: 0 Hours 0 Minutes 0.00707720447099 Seconds
Elapsed time: 0 Hours 0 Minutes 0.00690213072812 Seconds
Elapsed time: 0 Hours 0 Minutes 0.00707146932837 Seconds

Realize that the these commands have a base overhead of around 0.002 so the slowdown is 5x. Calling this operation hundreds of times becomes a problem for us.
It appears that the changes to IntTools_FaceFace::ComputeTolReached3d between 6.8.0 and 6.9.0 caused this. The bottleneck is in the following call stack:

IntTools_FaceFace::Perform
IntTools_FaceFace::ComputeTolReached3d
IntTools_FaceFace::ComputeTolerance
IntTools_Tools::ComputeTolerance
No tags attached.
related to 0026310closed bugmaster Very slow boolean cut operations on cylinders 
? script.tcl (256) 2015-07-16 13:01
https://tracker.dev.opencascade.org/
Issue History
2015-07-15 21:03Aaron MichalkNew Issue
2015-07-15 21:03Aaron MichalkAssigned To => msv
2015-07-16 08:55srlockleyNote Added: 0043091
2015-07-16 09:37msvRelationship addedrelated to 0026310
2015-07-16 09:38msvNote Added: 0043095
2015-07-16 09:38msvAssigned Tomsv => nbv
2015-07-16 09:38msvStatusnew => assigned
2015-07-16 13:00nbvNote Added: 0043122
2015-07-16 13:01nbvFile Added: script.tcl
2015-07-16 13:05nbvNote Added: 0043123
2015-07-16 13:05nbvAssigned Tonbv => msv
2015-07-16 13:05nbvStatusassigned => resolved
2015-07-16 13:05nbvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=11018#r11018
2015-07-16 13:08nbvNote Added: 0043124
2015-07-16 13:08nbvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=11019#r11019
2015-07-16 13:08nbvNote Edited: 0043124bug_revision_view_page.php?bugnote_id=43124#r11021
2015-07-16 14:33msvNote Added: 0043130
2015-07-16 14:33msvAssigned Tomsv => bugmaster
2015-07-16 14:33msvStatusresolved => reviewed
2015-07-16 14:33msvResolutionopen => unable to reproduce
2015-07-28 17:00bugmasterAssigned Tobugmaster => apn
2015-07-30 13:08gitNote Added: 0043699
2015-07-30 13:09apnTest case number => bugs modalg_6 bug26447
2015-07-30 13:09apnAssigned Toapn => bugmaster
2015-07-30 13:09apnStatusreviewed => tested
2015-07-30 13:09apnTarget Version => 7.0.0
2015-07-31 12:31bugmasterChangeset attached => occt master 3c1304bf
2015-07-31 12:31bugmasterStatustested => verified
2015-07-31 12:31bugmasterResolutionunable to reproduce => fixed
2015-08-14 10:52gitNote Added: 0044135
2015-08-26 11:00abvTarget Version7.0.0 => 6.9.1
2015-10-16 14:56aivStatusverified => closed
2015-10-23 20:50aivFixed in Version => 6.9.1

Notes
(0043091)
srlockley   
2015-07-16 08:55   
This may be the same issue as report 0026310
(0043095)
msv   
2015-07-16 09:38   
Nikolay, please check if this issue is solved by 0026310.
(0043122)
nbv   
2015-07-16 13:00   
Dear Aaron Michalk,

I have following result on my machine (script is attached).

In 6.8.0:
Elapsed time: 0 Hours 0 Minutes 0.170721537717 Seconds
CPU user time: 0.1716011 seconds
CPU system time: 0 seconds

In 7.0.0 dev
Elapsed time: 0 Hours 0 Minutes 0.170156746393 Seconds
CPU user time: 0.1716011 seconds
CPU system time: 0 seconds

The greatest time is spend on solrst.Perform(...) function, which is called from IntPatch_ImpImpIntersection::Perform(...) (it looks for intersection line on surface boundaries).

P.S.

Algorithm of IntTools_Tools::ComputeTolerance() was improved and sped up in the frame of bug #25613.
(0043123)
nbv   
2015-07-16 13:05   
Dear Mikhail,

The problem is not reproduced on the current master (see http://tracker.dev.opencascade.org/view.php?id=26447#c43122 [^]).

Please close this bug with creation corresponding test case.
(0043124)
nbv   
2015-07-16 13:08   
Fix for issue 0026310 is not called in described case.

(0043130)
msv   
2015-07-16 14:33   
Dear bugmaster, please close the bug and create a new test from the attached script.
(0043699)
git   
2015-07-30 13:08   
Branch CR26447 has been created by apn.

SHA-1: 67d9ec262addd5d6ec8947bf1ca45876005a3e19


Detailed log of new commits:

Author: apn
Date: Thu Jul 30 13:08:26 2015 +0300

    0026447: Performance degradation intersecting cylindrical surfaces
    
    Added test case bugs/modalg_6/bug26447
(0044135)
git   
2015-08-14 10:52   
Branch CR26447 has been deleted by inv.

SHA-1: 67d9ec262addd5d6ec8947bf1ca45876005a3e19