diff --git a/tests/perf/bop/buildfaces b/tests/perf/bop/buildfaces new file mode 100644 index 0000000000..19482c224d --- /dev/null +++ b/tests/perf/bop/buildfaces @@ -0,0 +1,112 @@ +puts "========" +puts "CR24292" +puts "========" +puts "" +####################################################################### +# Testing parallelization of BO +####################################################################### + +# test comparing building faces in parallel and serial mode +# HAVE_TBB must be set +# It is better using MMGT_OPT=2 (tbb memory allocator) + +restore [locate_data_file bug24292_x_256_stars.brep] b1 + +tcopy b1 b2 +trotate b2 0 0 0 0 0 1 10 + +tcopy b2 b3 +trotate b3 0 0 0 0 0 1 10 + +tcopy b3 b4 +trotate b4 0 0 0 0 0 1 10 +# +# b1 - 256 arguments (faces) +# b2 - 256 arguments (faces) +# b3 - 256 arguments (faces) +# b4 - 256 arguments (faces) +# +bclearobjects; bcleartools; +baddcompound b1 +baddcompound b2 +baddcompound b3 +baddcompound b4 + +bfillds +# +puts "Comparing perfomance of building many faces" +puts "in parallel and serial modes" + +# +# parallel +puts "Build faces in parallel mode:" +set info1 [bbuild rp -t] +regexp {Tps: +([-0-9.+eE]+)} ${info1} full Tps1 +puts "Tps1=${Tps1}" + +# +# serial +puts "Build faces in serial mode:" +set info2 [bbuild rs -s -t] +regexp {Tps: +([-0-9.+eE]+)} ${info2} full Tps2 +puts "Tps2=${Tps2}" + +set nb_v_good 23060 +set nb_e_good 35880 +set nb_w_good 11704 +set nb_f_good 11704 +set nb_sh_good 0 +set nb_sol_good 0 +set nb_compsol_good 0 +set nb_compound_good 1 +set nb_shape_good 82349 + +set dump1 [nbshapes rp] +regexp {VERTEX +: +([-0-9.+eE]+)} ${dump1} full nb_v1 +regexp {EDGE +: +([-0-9.+eE]+)} ${dump1} full nb_e1 +regexp {WIRE +: +([-0-9.+eE]+)} ${dump1} full nb_w1 +regexp {FACE +: +([-0-9.+eE]+)} ${dump1} full nb_f1 +regexp {SHELL +: +([-0-9.+eE]+)} ${dump1} full nb_sh1 +regexp {SOLID +: +([-0-9.+eE]+)} ${dump1} full nb_sol1 +regexp {COMPSOLID +: +([-0-9.+eE]+)} ${dump1} full nb_compsol1 +regexp {COMPOUND +: +([-0-9.+eE]+)} ${dump1} full nb_compound1 +regexp {SHAPE +: +([-0-9.+eE]+)} ${dump1} full nb_shape1 + +set dump2 [nbshapes rp] +regexp {VERTEX +: +([-0-9.+eE]+)} ${dump2} full nb_v2 +regexp {EDGE +: +([-0-9.+eE]+)} ${dump2} full nb_e2 +regexp {WIRE +: +([-0-9.+eE]+)} ${dump2} full nb_w2 +regexp {FACE +: +([-0-9.+eE]+)} ${dump2} full nb_f2 +regexp {SHELL +: +([-0-9.+eE]+)} ${dump2} full nb_sh2 +regexp {SOLID +: +([-0-9.+eE]+)} ${dump2} full nb_sol2 +regexp {COMPSOLID +: +([-0-9.+eE]+)} ${dump2} full nb_compsol2 +regexp {COMPOUND +: +([-0-9.+eE]+)} ${dump2} full nb_compound2 +regexp {SHAPE +: +([-0-9.+eE]+)} ${dump2} full nb_shape2 + +if { ${nb_v_good} != ${nb_v1} + || ${nb_e_good} != ${nb_e1} + || ${nb_w_good} != ${nb_w1} + || ${nb_f_good} != ${nb_f1} + || ${nb_sh_good} != ${nb_sh1} + || ${nb_sol_good} != ${nb_sol1} + || ${nb_compsol_good} != ${nb_compsol1} + || ${nb_compound_good} != ${nb_compound1} + || ${nb_shape_good} != ${nb_shape1} } { + puts "Error : Number of shapes is faulty" +} + +if { ${nb_v2} != ${nb_v1} + || ${nb_e2} != ${nb_e1} + || ${nb_w2} != ${nb_w1} + || ${nb_f2} != ${nb_f1} + || ${nb_sh2} != ${nb_sh1} + || ${nb_sol2} != ${nb_sol1} + || ${nb_compsol2} != ${nb_compsol1} + || ${nb_compound2} != ${nb_compound1} + || ${nb_shape2} != ${nb_shape1} } { + puts "Error : Number of shapes is bad" +} + +vinit +vdisplay rs +vfit