0032539: Modeling Algorithms - Parallelize BRepExtrema_DistShapeShape algorithm
[occt.git] / tests / perf / modalg / bug32539_1
diff --git a/tests/perf/modalg/bug32539_1 b/tests/perf/modalg/bug32539_1
new file mode 100644 (file)
index 0000000..6c7a433
--- /dev/null
@@ -0,0 +1,61 @@
+puts "=========="
+puts "0032539: Modeling Algorithms - Parallelize BRepExtrema_DistShapeShape algorithm"
+puts "=========="
+puts ""
+
+# prepare
+pload XDE OCAF
+XOpen [locate_data_file bug32539_1.xbf] XB
+XGetShape s1 XB 0:1:1:2
+XGetShape s2 XB 0:1:1:4
+Close XB
+btranslate s1 0 0 60
+brotate s2 0 0 0 0 0 1 90
+
+# multi-thread
+dchrono p reset; dchrono p start;
+set pres [distmini res s1 s2 -parallel]
+dchrono p stop;
+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
+set p_Time [expr ${p_Hours}*60.*60. + ${p_Minutes}*60. + ${p_Seconds} ]
+puts "multithreaded time: $p_Time"
+set pdist [dval res_val]
+
+vclear
+vclose ALL
+vinit v1/v1
+vdisplay -dispMode 1 s1 s2 res res2 res3 res4
+vfit
+checkview -screenshot -3d -path ${imagedir}/${test_image}_multi.png
+
+#single-thread
+dchrono s reset; dchrono s start;
+set cres [distmini res s1 s2]
+dchrono s stop;
+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
+set s_Time [expr ${s_Hours}*60.*60. + ${s_Minutes}*60. + ${s_Seconds} ]
+puts "single-threaded time: $s_Time"  
+
+set sdist [dval res_val]
+
+vclear
+vclose ALL
+vinit v2/v2
+vdisplay -dispMode 1 s1 s2 res res2 res3 res4
+vfit
+checkview -screenshot -3d -path ${imagedir}/${test_image}_single.png
+
+# compare
+set ratio [expr ${s_Time}/${p_Time} ]
+puts "acceleration in multi-threaded work: $ratio" 
+
+if {[string compare $cres $pres] != 0} {
+  puts "Error: different result between single-thread and multi-thread mode"
+}
+
+if {[expr abs(${sdist} - ${pdist})] > 1E-13} {
+  puts "Error: different distance between single-thread and multi-thread mode"
+}
+
+