View Issue Details

IDProjectCategoryView StatusLast Update
0026221Open CASCADEOCCT:Visualizationpublic2015-10-23 20:51
ReporterdbpAssigned Tobugmaster  
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Target Version6.9.1Fixed in Version6.9.1 
Summary0026221: Visualization - use NCollection_IndexedMap instead of NCollection_Sequence in OpenGl_Layer to improve performance
Descriptionbool OpenGl_Layer::Remove (const OpenGl_Structure* theStruct,
                           Standard_Integer& thePriority,
                           Standard_Boolean isForChangePriority)

is bottleneck in case of removing large number of connected objects. For attached test case it takes ~ 30 seconds (in release mode, Core i5 3.1 GHz).
Steps To Reproduce
pload MODELING VISUALIZATION
psphere s 0.5
tclean s
incmesh s 0.1
trinfo s

vinit View1
vclear
vaxo
vsetdispmode 1
vdefaults -defl 1.0 -autoTriang off
vdisplay s

# disable output of commands
decho off

set aNb1 300

# display 300x300 connected instances of single presentation
puts "Creating [expr $aNb1*$aNb1] instances..."
set t [time {for {set i 0} {$i < $aNb1} {incr i} {for {set j 0} {$j < $aNb1} {incr j} {vconnectto s_${i}_${j} ${i} ${j} 0 s -noupdate}}}]
set d1 [lindex $t 0]
puts "Done in $d1 microseconds!\n"

# this command is slow (~ 30 secs)
vclear
TagsNo tags attached.
Test case numberbugs vis bug26199

Relationships

related to 0026029 closedabv Visualization - Poor performance of connected objects 
related to 0026199 closedbugmaster Visualization - use NCollection_IndexedMap instead of NCollection_Sequence in OpenGl_BVHClipPrimitiveSet to improve performance 
related to 0026220 closedbugmaster Visualization - In Graphic3d_Structure use single NCollection_IndexedMap instead of NCollection_DataMap and NCollection_Sequence 

Activities

git

2015-05-22 13:38

administrator   ~0041423

Branch CR26221 has been created by dbp.

SHA-1: 427e21ca2b527722065b3a5df346475b7caf6d9a


Detailed log of new commits:

Author: dbp
Date: Fri May 22 13:38:37 2015 +0300

    0026221: Visualization - Revise OpenGl_Layer to use more efficient collection for OpenGl_Structures

dbp

2015-05-22 13:42

developer   ~0041424

Dear kgv,

please review the patch in branch CR26221.

This patch eliminates last known bottleneck when processing large number of (connected) obejcts. In fact, both displaying and removing 90 000 of spheres (from test case) now takes 1-2 seconds. Both memory consumption and rendering performance were not affected.

git

2015-05-25 09:43

administrator   ~0041474

Branch CR26221_1 has been created by kgv.

SHA-1: 4943903d9000a5be6b385d6a2881f153b201c33e


Detailed log of new commits:

Author: dbp
Date: Mon May 25 09:43:06 2015 +0300

    Visualization - use NCollection_IndexedMap instead of NCollection_Sequence in OpenGl_Layer to improve performance

kgv

2015-05-25 09:44

developer   ~0041475

Dear Denis,

please complete the patch and process OpenGl_View::myImmediateList, so that OpenGl_SequenceOfStructure type can be removed.

git

2015-05-26 11:09

administrator   ~0041540

Branch CR26221_2 has been created by dbp.

SHA-1: a2875bcab247e643cf75744753ad22bc98aa2bbf


Detailed log of new commits:

Author: dbp
Date: Mon May 25 09:43:06 2015 +0300

    Visualization - use NCollection_IndexedMap instead of NCollection_Sequence in OpenGl_Layer to improve performance

dbp

2015-05-26 11:10

developer   ~0041541

Dear kgv,

please review the patch in branch CR26221_2.

git

2015-05-26 11:29

administrator   ~0041544

Branch CR26221_2 has been updated forcibly by dbp.

SHA-1: 19928d4bcff55a81791a13cd64e4200570e3a50e

kgv

2015-05-26 11:33

developer   ~0041545

Please test the patch.

mkv

2015-05-27 18:45

tester   ~0041622

Dear BugMaster,
Branch CR26221_2 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested on Release mode.
SHA-1: 19928d4bcff55a81791a13cd64e4200570e3a50e

Number of compiler warnings:

occt component :
Linux: 25 (25 on master)
Windows: 0 (0 on master)

products component :
Linux: 37 (37 on master)
Windows: 0 (0 on master)

Regressions/Differences:
No regressions/differences

Testing cases:
http://occt-tests/CR26221-2-master-occt-64/Debian70-64/bugs/vis/bug26199.html
http://occt-tests/CR26221-2-master-occt-64/Windows-64-VC10/bugs/vis/bug26199.html
bugs vis bug26199: OK

Testing on Linux:
occt component :
Total MEMORY difference: 99919376 / 99834711 [+0.08%]
Total CPU difference: 18922.18000000004 / 18381.79000000015 [+2.94%]
products component :
Total MEMORY difference: 24094088 / 24303876 [-0.86%]
Total CPU difference: 8072.450000000004 / 7853.200000000018 [+2.79%]

Testing on Windows:
occt component :
Total MEMORY difference: 59055247 / 58652092 [+0.69%]
Total CPU difference: 16948.135841198928 / 16786.17560299903 [+0.96%]
products component :
Total MEMORY difference: 15633460 / 15628514 [+0.03%]
Total CPU difference: 6591.104650399998 / 6588.515033799982 [+0.04%]

There are no differences in images found by testdiff.

git

2015-07-27 13:34

administrator   ~0043502

Branch CR26221_2 has been deleted by kgv.

SHA-1: 19928d4bcff55a81791a13cd64e4200570e3a50e

git

2015-07-27 13:48

administrator   ~0043551

Branch CR26221 has been deleted by kgv.

SHA-1: 427e21ca2b527722065b3a5df346475b7caf6d9a

git

2015-07-27 13:48

administrator   ~0043552

Branch CR26221_1 has been deleted by kgv.

SHA-1: 4943903d9000a5be6b385d6a2881f153b201c33e

Related Changesets

occt: master 9f112210

2015-05-25 06:43:06

dbp


Committer: bugmaster Details Diff
0026221: Visualization - use NCollection_IndexedMap instead of NCollection_Sequence in OpenGl_Layer to improve performance Affected Issues
0026221
mod - src/OpenGl/FILES Diff File
mod - src/OpenGl/OpenGl_BVHClipPrimitiveSet.cxx Diff File
mod - src/OpenGl/OpenGl_BVHClipPrimitiveSet.hxx Diff File
mod - src/OpenGl/OpenGl_Layer.cxx Diff File
mod - src/OpenGl/OpenGl_Layer.hxx Diff File
rm - src/OpenGl/OpenGl_SequenceOfStructure.hxx Diff File
mod - src/OpenGl/OpenGl_View.hxx Diff File
mod - src/OpenGl/OpenGl_View_2.cxx Diff File
mod - src/OpenGl/OpenGl_View_Raytrace.cxx Diff File
mod - src/OpenGl/OpenGl_Workspace.cxx Diff File

Issue History

Date Modified Username Field Change
2015-05-13 18:48 dbp New Issue
2015-05-13 18:48 dbp Assigned To => kgv
2015-05-13 18:49 dbp Relationship added related to 0026220
2015-05-13 18:49 dbp Relationship added related to 0026029
2015-05-13 18:49 dbp Relationship added related to 0026199
2015-05-13 18:52 kgv Description Updated
2015-05-13 18:52 kgv Steps to Reproduce Updated
2015-05-13 18:52 kgv Steps to Reproduce Updated
2015-05-21 16:08 dbp Assigned To kgv => dbp
2015-05-22 13:38 git Note Added: 0041423
2015-05-22 13:42 dbp Note Added: 0041424
2015-05-22 13:42 dbp Assigned To dbp => kgv
2015-05-22 13:42 dbp Status new => resolved
2015-05-25 09:41 kgv Summary Visualization - Revise OpenGl_Layer to use more efficient collection for OpenGl_Structures => Visualization - use NCollection_IndexedMap instead of NCollection_Sequence in OpenGl_Layer to improve performance
2015-05-25 09:43 git Note Added: 0041474
2015-05-25 09:44 kgv Note Added: 0041475
2015-05-25 09:44 kgv Assigned To kgv => dbp
2015-05-25 09:44 kgv Status resolved => assigned
2015-05-26 11:09 git Note Added: 0041540
2015-05-26 11:10 dbp Note Added: 0041541
2015-05-26 11:10 dbp Assigned To dbp => kgv
2015-05-26 11:10 dbp Status assigned => resolved
2015-05-26 11:29 git Note Added: 0041544
2015-05-26 11:33 kgv Note Added: 0041545
2015-05-26 11:33 kgv Assigned To kgv => bugmaster
2015-05-26 11:33 kgv Status resolved => reviewed
2015-05-26 11:57 mkv Assigned To bugmaster => mkv
2015-05-27 18:45 mkv Note Added: 0041622
2015-05-27 18:45 mkv Assigned To mkv => bugmaster
2015-05-27 18:45 mkv Status reviewed => tested
2015-05-27 18:45 mkv Test case number => bugs vis bug26199
2015-05-29 14:15 bugmaster Changeset attached => occt master 9f112210
2015-05-29 14:15 bugmaster Status tested => verified
2015-05-29 14:15 bugmaster Resolution open => fixed
2015-07-27 13:34 git Note Added: 0043502
2015-07-27 13:48 git Note Added: 0043551
2015-07-27 13:48 git Note Added: 0043552
2015-08-26 11:11 abv Target Version 7.0.0 => 6.9.1
2015-10-16 14:56 aiv Status verified => closed
2015-10-23 20:51 aiv Fixed in Version => 6.9.1