0032539: Modeling Algorithms - Parallelize BRepExtrema_DistShapeShape algorithm
[occt.git] / tests / perf / modalg / bug32539_1
1 puts "=========="
2 puts "0032539: Modeling Algorithms - Parallelize BRepExtrema_DistShapeShape algorithm"
3 puts "=========="
4 puts ""
5
6 # prepare
7 pload XDE OCAF
8 XOpen [locate_data_file bug32539_1.xbf] XB
9 XGetShape s1 XB 0:1:1:2
10 XGetShape s2 XB 0:1:1:4
11 Close XB
12 btranslate s1 0 0 60
13 brotate s2 0 0 0 0 0 1 90
14
15 # multi-thread
16 dchrono p reset; dchrono p start;
17 set pres [distmini res s1 s2 -parallel]
18 dchrono p stop;
19 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
20 set p_Time [expr ${p_Hours}*60.*60. + ${p_Minutes}*60. + ${p_Seconds} ]
21 puts "multithreaded time: $p_Time"
22  
23 set pdist [dval res_val]
24
25 vclear
26 vclose ALL
27 vinit v1/v1
28 vdisplay -dispMode 1 s1 s2 res res2 res3 res4
29 vfit
30 checkview -screenshot -3d -path ${imagedir}/${test_image}_multi.png
31
32 #single-thread
33 dchrono s reset; dchrono s start;
34 set cres [distmini res s1 s2]
35 dchrono s stop;
36 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
37 set s_Time [expr ${s_Hours}*60.*60. + ${s_Minutes}*60. + ${s_Seconds} ]
38 puts "single-threaded time: $s_Time"  
39
40 set sdist [dval res_val]
41
42 vclear
43 vclose ALL
44 vinit v2/v2
45 vdisplay -dispMode 1 s1 s2 res res2 res3 res4
46 vfit
47 checkview -screenshot -3d -path ${imagedir}/${test_image}_single.png
48
49 # compare
50 set ratio [expr ${s_Time}/${p_Time} ]
51 puts "acceleration in multi-threaded work: $ratio" 
52
53 if {[string compare $cres $pres] != 0} {
54   puts "Error: different result between single-thread and multi-thread mode"
55 }
56
57 if {[expr abs(${sdist} - ${pdist})] > 1E-13} {
58   puts "Error: different distance between single-thread and multi-thread mode"
59 }
60
61