mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-05-06 10:36:12 +03:00
60 lines
1.8 KiB
Plaintext
60 lines
1.8 KiB
Plaintext
puts "============"
|
|
puts "0026029: Visualization - Poor performance of connected objects"
|
|
puts "============"
|
|
puts ""
|
|
###########################################################
|
|
# Time spent on computation of large number of connected objects
|
|
# should grow linearly with the number of objects
|
|
###########################################################
|
|
|
|
pload MODELING VISUALIZATION
|
|
psphere s 0.5
|
|
tclean s
|
|
incmesh s 0.1
|
|
trinfo s
|
|
|
|
vinit View1
|
|
vclear
|
|
vaxo
|
|
#vcaps -vbo 0
|
|
vsetdispmode 1
|
|
vdefaults -defl 1.0 -autoTriang off
|
|
vdisplay s
|
|
|
|
# disable output of commands
|
|
decho off
|
|
|
|
set aNb1 100
|
|
|
|
# display 100x100 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"
|
|
vclear
|
|
|
|
set aNb2 200
|
|
|
|
# display 200x200 connected instances of single presentation
|
|
puts "Creating [expr $aNb2*$aNb2] instances..."
|
|
set t [time {for {set i 0} {$i < $aNb2} {incr i} {for {set j 0} {$j < $aNb2} {incr j} {vconnectto s_${i}_${j} ${i} ${j} 0 s -noupdate}}}]
|
|
set d2 [lindex $t 0]
|
|
puts "Done in $d2 microseconds!\n"
|
|
vclear
|
|
|
|
# compare two CPU times: the ratio should be quasi-linear
|
|
set expected_ratio [expr double($aNb2 * $aNb2) / double($aNb1 * $aNb1)]
|
|
set actual_ratio [expr double($d2) / double($d1)]
|
|
puts "Comparing CPU time for the two test cases..."
|
|
puts "============================================="
|
|
puts "Expected ratio: $expected_ratio"
|
|
puts "Actual ratio: $actual_ratio"
|
|
puts "============================================="
|
|
|
|
# Allow 50% deviation from linear growth
|
|
if {[expr $actual_ratio / $expected_ratio] > 1.5} {
|
|
puts "Error: non-linear time growth detected!"
|
|
} else {
|
|
puts "Test passed!"
|
|
}
|