View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0024832 | Community | OCCT:Modeling Algorithms | public | 2014-04-15 12:53 | 2014-11-11 12:52 |
Reporter | Timo | Assigned To | apn | ||
Priority | normal | Severity | tweak | ||
Status | closed | Resolution | fixed | ||
OS | Windows | ||||
Product Version | 6.7.0 | ||||
Target Version | 6.8.0 | Fixed in Version | 6.8.0 | ||
Summary | 0024832: Performance of new boolean operations has become worse | ||||
Description | When upgrading from OCC 6.5.4 to 6.7.0 we noticed that the performance of boolean operations has become worse in several test cases (by factor 1.5 - 2.0). Here a test case is added where we meassured the following times: - OCC 6.5.4: 10 sec - OCC 6.6.0: 11 sec - OCC 6.7.0: 18 sec - current master (10.04.20014): 18 sec So, the performance mainly degraded from 6.6.0 to 6.7.0. Is this expectable due to preparation of boolean operations for parallelization or should it be considered to be a bug? | ||||
Steps To Reproduce | restore Comp3.brep c explode c bop c_1 c_2 | ||||
Tags | No tags attached. | ||||
Test case number | Not needed | ||||
|
Comp3.zip (476,487 bytes) |
|
Dear PKV, please check this issue |
|
The performance is getting worse in the class Extrema_ExtCS. The class is intensively used in computations of Edge/Face Interferences. The measurement of the performance has be done for the OCC6.6.0 and DEV. The results are the following: DEV full elapsed time: 19.30 sec time spent by Extrema_ExtCS: 9.73 sec OCC6.6.0 full elapsed time: 12.01 sec time spent by Extrema_ExtCS: 0.59 sec For the case there are toltal 163 pairs of E/F to treat in terms of bounding boxes.Thus the method IntTools_BeanFaceIntersector::Perform() is invoked at least 163 times. Inside the method there is a lot of Extrema_ExtCS::Perform(...). The attachment contains 2 examples of E/F intersections where the performance is worse in >3 times (0.24sec in DEV vs. 0.07sec. in OCC6.6.0) #------------------------------------------------------------- #Please, use the following commands to reproduce the problem: # case 1 restore ez82 b1 restore fz2 b2 bclearobjects; bcleartools; baddobjects b1 b2 bfillds -t -s # case 2 restore ez89 b1 restore fz2 b2 bclearobjects; bcleartools; baddobjects b1 b2 bfillds -t -s #---------------------------------------------------------- Unfortunately in OCC6.6.0 there is not "-t -s" options, but it is possible to provide them using the source: DEV/BOPTest_PartitionCommands.cxx as a sample. The modified file for OCC6.6.0 is in the attachment. |
2014-04-16 12:29 developer |
0024832.zip (318,509 bytes) |
2014-04-17 06:21 developer |
BOPTest_PartitionCommands.cxx (8,828 bytes) |
|
The performance has downgraded due to fix made for #23995: new calculations have been added for additional check of points of discontinuities on C0 curves. |
|
Dear kgv, please review the patch in branch CR24832_1. |
|
Performance was slightly improved by implementing a few optimizations. On attached test case the results are the following: Master: 19.5 sec Branch: 15.5 sec (- 20%) The main question is about processing of "sharp points" (Extrema_ExtCS::Perform). Exluding first and last sharp points allows to improve performance by additional 40%: ... for (i = 2; i < SharpPoints.Upper(); i++) { ... Therefore it may be incorrect because some solutions are produced by these points. |
|
Dear dbp,+ pointer PToExtPExtS to ExtPExtS from Extrema; + pointer PToExtPRevS to ExtPRevS from Extrema; please change definition of these classes to inherit from Standard_Transient and use as handles. They used only within Extrema package and no existed public API methods/classes will be affected by this change. >> Therefore it may be incorrect because some solutions are produced by these points. please apply this change as discussed with Andrey. |
|
Dear kgv, please review the patch in branch CR24832_2. |
|
On attached test case the results are the following: Master: 19.5 sec Branch: 10.2 sec (-20% (optimizations) - 28% (sharp points) = -48%) |
|
The same issue is still here for two other fields:+ myPExtS : SurfacePtr from Adaptor3d; + myPRevS : SurfacePtr from Adaptor3d; Please consider changing their definition as NCollection_Handle (using imported) - in Extrema_ExtPExtS/Extrema_ExtPRevS and remove redundant fields from Extrema_ExtPS. |
|
Dear kgv, please review modifications in branch CR24832_2. |
|
Please test the patch in branch CR24832_3. |
|
Dear BugMaster, Branch CR24832_3 (and products from GIT master) was compiled on Linux, Windows and MacOS platforms and tested. SHA-1: e6b0d9ec4736dc4c7665609f61f23fdc8a338703 Number of compiler warnings: occt component : Linux: 17 (17 on master) Windows: 0 (0 on master) MacOS: 205 (212 on master) products component : Linux: 11 (11 on master) Windows: 2 (2 on master) Regressions/Differences: No regressions Testing cases: Not needed Testing on Linux: Total MEMORY difference: 355757448 / 355968116 Total CPU difference: 51924.55999999994 / 51289.87999999977 Testing on Windows: Total MEMORY difference: 379613708 / 379904880 Total CPU difference: 42886.953125 / 35684.234375 There are no differences in images found by testdiff. |
|
Andrey, please provide results of testing performance confirming that the original problem is fixed |
|
LINUX: bug24823_1 (ez82 fz2) master: Tps: 0.35 fix: Tps: 0.02 bug24823_2 (ez89 fz2) master: Tps: 0.35 fix: Tps: 0.02 bug24823_3 (test in description) master: Elapsed time: 21.889494 Seconds fix: Elapsed time: 9.117681 Seconds http://occt-tests/24832_branch_linux/summary.html http://occt-tests/24832_master_linux/summary.html WINDOWS: bug24823_1 (ez82 fz2) master: Tps: 0.42 fix: Tps: 0.03 bug24823_2 (ez89 fz2) master: Tps: 0.43 fix: Tps: 0.03 bug24823_3 (test in description) master: Elapsed time: 28.3160944599 Seconds fix: Elapsed time: 10.0781670224 Seconds http://occt-tests/24832_branch_windows/summary.html http://occt-tests/24832_master_windows/summary.html |
occt: master 0734c53d 2014-05-22 13:52:20
Committer: apn Details Diff |
0024832: Performance of new boolean operations has become worse Replace C pointers with handles. Encapsulate handles in Extrema_ExtPExtS and Extrema_ExtPRevS classes. |
Affected Issues 0024832 |
|
mod - src/Extrema/Extrema_ExtCS.cxx | Diff File | ||
mod - src/Extrema/Extrema_ExtPExtS.cdl | Diff File | ||
mod - src/Extrema/Extrema_ExtPExtS.cxx | Diff File | ||
mod - src/Extrema/Extrema_ExtPRevS.cdl | Diff File | ||
mod - src/Extrema/Extrema_ExtPRevS.cxx | Diff File | ||
mod - src/Extrema/Extrema_ExtPS.cdl | Diff File | ||
mod - src/Extrema/Extrema_ExtPS.cxx | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-04-15 12:53 | Timo | New Issue | |
2014-04-15 12:53 | Timo | Assigned To | => ifv |
2014-04-15 12:53 | Timo | File Added: Comp3.zip | |
2014-04-15 12:55 | Timo | Relationship added | related to 0023807 |
2014-04-15 12:56 | Timo | Description Updated | |
2014-04-15 12:59 | Timo | OS | => Windows |
2014-04-15 12:59 | Timo | OS Version | => 7 (64 bit) |
2014-04-15 13:22 |
|
Note Added: 0028840 | |
2014-04-15 13:22 |
|
Assigned To | ifv => pkv |
2014-04-15 13:22 |
|
Status | new => assigned |
2014-04-16 12:28 |
|
Note Added: 0028869 | |
2014-04-16 12:29 |
|
File Added: 0024832.zip | |
2014-04-16 12:29 |
|
Assigned To | pkv => ifv |
2014-04-17 06:21 |
|
File Added: BOPTest_PartitionCommands.cxx | |
2014-04-17 06:24 |
|
Note Edited: 0028869 | |
2014-04-25 19:09 |
|
Assigned To | ifv => dbp |
2014-04-25 19:14 |
|
Note Added: 0029083 | |
2014-04-25 19:14 |
|
Target Version | 6.7.1 => 6.8.0 |
2014-04-29 19:22 |
|
Note Added: 0029147 | |
2014-04-29 19:22 |
|
Assigned To | dbp => kgv |
2014-04-29 19:22 |
|
Status | assigned => resolved |
2014-04-29 19:30 |
|
Note Added: 0029148 | |
2014-04-30 08:41 | kgv | Note Added: 0029149 | |
2014-04-30 08:41 | kgv | Assigned To | kgv => dbp |
2014-04-30 08:41 | kgv | Status | resolved => assigned |
2014-04-30 08:42 | kgv | Note Edited: 0029149 | |
2014-04-30 08:50 | kgv | Note Edited: 0029149 | |
2014-04-30 08:50 | kgv | Note Edited: 0029149 | |
2014-04-30 11:30 |
|
Note Added: 0029156 | |
2014-04-30 11:30 |
|
Assigned To | dbp => kgv |
2014-04-30 11:30 |
|
Status | assigned => resolved |
2014-04-30 11:34 |
|
Note Added: 0029157 | |
2014-04-30 12:01 | kgv | Note Added: 0029159 | |
2014-04-30 12:01 | kgv | Assigned To | kgv => dbp |
2014-04-30 12:01 | kgv | Status | resolved => assigned |
2014-05-12 16:01 |
|
Note Added: 0029280 | |
2014-05-12 16:01 |
|
Assigned To | dbp => kgv |
2014-05-12 16:01 |
|
Status | assigned => resolved |
2014-05-13 08:47 | kgv | Note Added: 0029290 | |
2014-05-13 08:47 | kgv | Assigned To | kgv => bugmaster |
2014-05-13 08:47 | kgv | Status | resolved => reviewed |
2014-05-14 16:32 | apn | Assigned To | bugmaster => apn |
2014-05-15 20:41 | apn | Note Added: 0029360 | |
2014-05-15 20:42 | apn | Test case number | => Not needed |
2014-05-15 20:42 | apn | Assigned To | apn => bugmaster |
2014-05-15 20:42 | apn | Status | reviewed => tested |
2014-05-15 20:50 |
|
Note Added: 0029361 | |
2014-05-22 12:37 | apn | Note Added: 0029460 | |
2014-05-23 14:25 | apn | Changeset attached | => occt master 0734c53d |
2014-05-23 14:25 | apn | Assigned To | bugmaster => apn |
2014-05-23 14:25 | apn | Status | tested => verified |
2014-05-23 14:25 | apn | Resolution | open => fixed |
2014-06-16 13:18 |
|
Relationship added | related to 0024979 |
2014-11-11 12:46 |
|
Fixed in Version | => 6.8.0 |
2014-11-11 12:52 |
|
Status | verified => closed |