mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-07-30 13:05:50 +03:00
Performance improvements in IntTools_EdgeEdge algorithm: 1. Added check for common box between edges: if common box between edges is thin, find exact solutions at once, without looking for rough ranges first; 2. Improved methods IntTools_EdgeEdge::FindBestSolution() and IntTools_EdgeEdge::CheckCoincidence(...) by using method SplitRangeOnSegments with resolution of the curve as a criteria for size of the ranges. Test cases for issue CR24696
44 lines
934 B
Plaintext
44 lines
934 B
Plaintext
puts "========="
|
|
puts "OCC24696"
|
|
puts "========="
|
|
puts ""
|
|
###########################################################
|
|
# Lower performance of the new Edge/Edge intersection algorithm
|
|
###########################################################
|
|
|
|
pload QAcommands
|
|
|
|
dchrono h reset
|
|
dchrono h start
|
|
|
|
restore [locate_data_file bug24696_cx_e1200_nurbs.brep] cx
|
|
|
|
bclearobjects
|
|
bcleartools
|
|
|
|
set edges [explode cx e]
|
|
set nbe [llength $edges]
|
|
for {set i 1} {$i <= $nbe} {incr i} {baddobjects cx_$i}
|
|
bfillds
|
|
bbuild result
|
|
|
|
dchrono h stop
|
|
set q [dchrono h show]
|
|
|
|
regexp {CPU user time: ([-0-9.+eE]+) seconds} $q full z
|
|
puts "$z"
|
|
|
|
if { [regexp {Windows} [dversion] ] } {
|
|
set max_time 20.0
|
|
} else {
|
|
set max_time 40.0
|
|
}
|
|
|
|
if { $z > ${max_time} } {
|
|
puts "Elapsed time is more than ${max_time} seconds - Faulty"
|
|
} else {
|
|
puts "Elapsed time is less than ${max_time} seconds - OK"
|
|
}
|
|
|
|
set 2dviewer 1
|