0032539: Modeling Algorithms - Parallelize BRepExtrema_DistShapeShape algorithm
[occt.git] / tests / perf / modalg / bug32539_2
1 puts "=========="
2 puts "0032539: Modeling Algorithms - Parallelize BRepExtrema_DistShapeShape algorithm"
3 puts "=========="
4 puts ""
5
6 # prepare
7 restore [locate_data_file 5000-12.brep] s1
8 restore [locate_data_file BPLSEITLI.brep] s2
9
10 # multi-thread
11 dchrono p reset; dchrono p start;
12 set pres [distmini res s1 s2 -parallel]
13 dchrono p stop;
14 regexp {Elapsed time: +([-0-9.+eE]+) Hours +([-0-9.+eE]+) Minutes +([-0-9.+eE]+) Seconds} [dchrono p show] full p_Hours p_Minutes p_Seconds
15 set p_Time [expr ${p_Hours}*60.*60. + ${p_Minutes}*60. + ${p_Seconds} ]
16 puts "multithreaded time: $p_Time"
17  
18 set pdist [dval res_val]
19
20 vclear
21 vclose ALL
22 vinit v1/v1
23 vdisplay -dispMode 1 s1 s2 res
24 vzoom 2
25 checkview -screenshot -3d -path ${imagedir}/${test_image}_multi.png
26
27 #single-thread
28 dchrono s reset; dchrono s start;
29 set cres [distmini res s1 s2]
30 dchrono s stop;
31 regexp {Elapsed time: +([-0-9.+eE]+) Hours +([-0-9.+eE]+) Minutes +([-0-9.+eE]+) Seconds} [dchrono s show] full s_Hours s_Minutes s_Seconds
32 set s_Time [expr ${s_Hours}*60.*60. + ${s_Minutes}*60. + ${s_Seconds} ]
33 puts "single-threaded time: $s_Time"  
34
35 set sdist [dval res_val]
36
37 vclear
38 vclose ALL
39 vinit v2/v2
40 vdisplay -dispMode 1 s1 s2 res
41 vzoom 2
42 checkview -screenshot -3d -path ${imagedir}/${test_image}_single.png
43
44 # compare
45 set ratio [expr ${s_Time}/${p_Time} ]
46 puts "acceleration in multi-threaded work: $ratio" 
47
48 if {[string compare $cres $pres] != 0} {
49   puts "Error: different result between single-thread and multi-thread mode"
50 }
51
52 if {[expr abs(${sdist} - ${pdist})] > 1E-13} {
53   puts "Error: different distance between single-thread and multi-thread mode"
54 }