DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0026447

Performance degradation intersecting cylindrical surfaces

CommunityOCCT:Modeling Algorithmsclosed8 public notes

Search issues

Description

Calling IntTools_FaceFace::Perform is significantly slower for two cylindrical surfaces.

Steps to reproduce

Dear testers,

Test for this issue must be bused on Attachment 1 (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.

Additional information

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

Public activity

8 archived notes

Participants are labeled by their role within this record.

01Commenter 2
This may be the same issue as report #0026310
02Commenter 2
Nikolay, please check if this issue is solved by #0026310.
03Commenter 3
Dear Participant,

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.
04Commenter 4
Dear Mikhail,

The problem is not reproduced on the current master (see #0026447).

Please close this bug with creation corresponding test case.
05Commenter 5
Fix for issue #0026310 is not called in described case.

06Commenter 6
Dear Commenter 1, please close the bug and create a new test from the attached script.
07Commenter 3
Branch [archived branch] has been created by Commenter 4.

[revision removed]


Detailed log of new commits:

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

    0026447: Performance degradation intersecting cylindrical surfaces
    
    Added test case bugs/modalg_6/bug26447
08Commenter 3
Branch [archived branch] has been deleted by Participant.

[revision removed]

Related records