Comparer result NOT-SAME state 0 : 1704473
state 1 : 420
state 2 : 0
state 3 : 243556
equals_count 1948449 content_count 242890 state_tot 1948449
2017-03-30 12:46:49.116 INFO [2880095] [*NDualContouringSample::operator@96] vertices 5042
2017-03-30 12:46:49.117 INFO [2880095] [*NDualContouringSample::operator@97] indices 36912
2017-03-30 12:46:49.123 INFO [2880095] [NDualContouringSample::report@58] NDualContouringSample::
2017-03-30 12:46:49.123 INFO [2880095] [NDualContouringSample::report@59] NDualContouringSample nominal 8 coarse 6 verbosity 1 threshold 1 scale_bb 1.01
2017-03-30 12:46:49.123 INFO [2880095] [TimesTable::dump@103] TimesTable::dump filter: NONE
0.000 t_absolute t_delta
0.000 0.000 0.000 : _ConstructOctreeBottomUp
4.842 4.842 4.842 : ConstructOctreeBottomUp
0.007 4.850 0.007 : _ConstructOctreeNodes
33.947 38.796 33.947 : ConstructOctreeNodes
0.006 38.802 0.006 : _Comparer
0.020 38.823 0.020 : Comparer
0.000 38.823 0.000 : _SimplifyOctree
0.096 38.919 0.096 : SimplifyOctree
0.006 38.924 0.006 : _CollectTriangles
0.006 38.930 0.006 : CollectTriangles
Skipping parent hookup, makes no time difference (4.6 down from 4.8) time dominated by leaves:
Comparer result NOT-SAME state 0 : 0
state 1 : 1
state 2 : 0
state 3 : 0
equals_count 1 content_count 0 state_tot 1
2017-03-30 12:53:26.957 INFO [2886078] [*NDualContouringSample::operator@96] vertices 5042
2017-03-30 12:53:26.957 INFO [2886078] [*NDualContouringSample::operator@97] indices 36912
2017-03-30 12:53:26.964 INFO [2886078] [NDualContouringSample::report@58] NDualContouringSample::
2017-03-30 12:53:26.964 INFO [2886078] [NDualContouringSample::report@59] NDualContouringSample nominal 8 coarse 6 verbosity 1 threshold 1 scale_bb 1.01
2017-03-30 12:53:26.964 INFO [2886078] [TimesTable::dump@103] TimesTable::dump filter: NONE
0.000 t_absolute t_delta
0.000 0.000 0.000 : _ConstructOctreeBottomUp
4.629 4.629 4.629 : ConstructOctreeBottomUp
0.000 4.629 0.000 : _ConstructOctreeNodes
33.807 38.436 33.807 : ConstructOctreeNodes
0.007 38.443 0.007 : _Comparer
0.000 38.443 0.000 : Comparer
0.000 38.443 0.000 : _SimplifyOctree
0.095 38.538 0.095 : SimplifyOctree
0.005 38.543 0.005 : _CollectTriangles
0.006 38.549 0.006 : CollectTriangles
2017-03-30 12:53:26.964 INFO [2886078] [*GMaker::makeFromCSG@136] GMaker::makeFromCSG tessa DCS numTris 12304 tris_bb mi (-150.22 -150.22 -250.03) mx ( 250.23 250.23 250.03) tessa_valid YES
2017-03-24 12:21:36.557 INFO [1542447] [*GParts::make@122] GParts::make NCSG path /tmp/blyth/opticks/tboolean-csg-two-box-minus-sphere-interlocked-py-/0.npy sh 1,4,4 spec Rock//perfectAbsorbSurface/Vacuum type box
2017-03-24 12:21:36.557 INFO [1542447] [*NDualContouringSample::operator@75] NDualContouringSample xyzExtent 303 ijkExtent 64 bbce ( 50.00 50.00 0.00 300.00) ce 50.0000,50.0000,0.0000,4.7344 ilow -64,-64,-64
CheckDomain size 128 min (-64,-64,-64) ce (50,50,0,4.73438)
corner 0 ijk (-64,-64,-64) xyz ( -253, -253, -303) --> 202.889
corner 1 ijk (-64,-64, 64) xyz ( -253, -253, 303) --> 102.889
corner 2 ijk (-64, 64,-64) xyz ( -253, 353, -303) --> 202.889
corner 3 ijk (-64, 64, 64) xyz ( -253, 353, 303) --> 202.889
corner 4 ijk ( 64,-64,-64) xyz ( 353, -253, -303) --> 202.889
corner 5 ijk ( 64,-64, 64) xyz ( 353, -253, 303) --> 202.889
corner 6 ijk ( 64, 64,-64) xyz ( 353, 353, -303) --> 102.889
corner 7 ijk ( 64, 64, 64) xyz ( 353, 353, 303) --> 202.889
2017-03-24 12:21:44.194 INFO [1542447] [*NDualContouringSample::operator@115] vertices 1810
2017-03-24 12:21:44.194 INFO [1542447] [*NDualContouringSample::operator@116] indices 12270
2017-03-24 12:21:44.196 INFO [1542447] [NDualContouringSample::report@53] NDualContouringSample::
2017-03-24 12:21:44.197 INFO [1542447] [NDualContouringSample::report@54] NDualContouringSample log2size 7 octreeSize 128 threshold 1 scale_bb 1.01 ilow -64,-64,-64
2017-03-24 12:21:44.197 INFO [1542447] [TimesTable::dump@103] TimesTable::dump filter: NONE
0.000 t_absolute t_delta
0.000 0.000 0.000 : _BuildOctree
0.000 0.000 0.000 : _ConstructOctreeNodes
7.615 7.616 7.615 : ConstructOctreeNodes
0.000 7.616 0.000 : _SimplifyOctree
0.020 7.636 0.020 : SimplifyOctree
0.000 7.636 0.000 : BuildOctree
0.000 7.636 0.000 : _GenerateMeshFromOctree
0.001 7.637 0.001 : GenerateMeshFromOctree
0.000 7.637 0.000 : _CollectTriangles
0.002 7.639 0.002 : CollectTriangles
2017-03-24 12:21:44.197 INFO [1542447] [*GMaker::makeFromCSG@130] GMaker::makeFromCSG tessa DCS numTris 4090 mi (-150.03 -150.03 -250.33) mx ( 250.03 250.03 250.33)
2017-03-24 12:21:44.198 INFO [1542447] [GMesh::updateBounds@1283] GMesh::updateBounds mesh with verts, g_instance_count 6
Avoid passing function by value, instead just pass pointer to function thru all those levels of recursion : nearly halves the time:
2017-03-24 12:44:40.951 INFO [1548682] [NDualContouringSample::report@54] NDualContouringSample log2size 7 octreeSize 128 threshold 1 scale_bb 1.01 ilow -64,-64,-64
2017-03-24 12:44:40.951 INFO [1548682] [TimesTable::dump@103] TimesTable::dump filter: NONE
0.000 t_absolute t_delta
0.000 0.000 0.000 : _BuildOctree
0.000 0.000 0.000 : _ConstructOctreeNodes
4.175 4.175 4.175 : ConstructOctreeNodes
0.000 4.175 0.000 : _SimplifyOctree
0.019 4.194 0.019 : SimplifyOctree
0.000 4.194 0.000 : BuildOctree
0.000 4.194 0.000 : _GenerateMeshFromOctree
0.001 4.195 0.001 : GenerateMeshFromOctree
0.000 4.195 0.000 : _CollectTriangles
0.002 4.197 0.002 : CollectTriangles
2017-03-24 12:44:40.951 INFO [1548682] [*GMaker::makeFromCSG@130] GMaker::makeFromCSG tessa DCS numTris 4090 mi (-150.03 -150.03 -250.33) mx ( 250.03 250.03 250.33)
Special case leaf creation with lookahead one level corner check, doesnt improve much:
2017-03-24 13:48:06.759 INFO [1568949] [NDualContouringSample::report@54] NDualContouringSample log2size 7 octreeSize 128 threshold 1 scale_bb 1.01 ilow -64,-64,-64
2017-03-24 13:48:06.759 INFO [1568949] [TimesTable::dump@103] TimesTable::dump filter: NONE
0.000 t_absolute t_delta
0.000 0.000 0.000 : _BuildOctree
0.000 0.000 0.000 : _ConstructOctreeNodes
4.002 4.003 4.002 : ConstructOctreeNodes
0.000 4.003 0.000 : _SimplifyOctree
0.020 4.023 0.020 : SimplifyOctree
0.000 4.023 0.000 : BuildOctree
0.000 4.023 0.000 : _GenerateMeshFromOctree
0.001 4.024 0.001 : GenerateMeshFromOctree
0.000 4.025 0.000 : _CollectTriangles
0.002 4.027 0.002 : CollectTriangles
2017-03-24 13:48:06.759 INFO [1568949] [*GMaker::makeFromCSG@130] GMaker::makeFromCSG tessa DCS numTris 4090 mi (-150.03 -150.03 -250.33) mx ( 250.03 250.03 250.33)
2017-03-24 13:48:06.760 INFO [1568949] [GMesh::updateBounds@1283] GMesh::updateBounds mesh with verts, g_instance_count 6
Recursive HasChildren lookahead adds time:
2017-03-24 14:24:03.515 INFO [1578213] [TimesTable::dump@103] TimesTable::dump filter: NONE
0.000 t_absolute t_delta
0.000 0.000 0.000 : _BuildOctree
0.000 0.000 0.000 : _ConstructOctreeNodes
5.603 5.604 5.603 : ConstructOctreeNodes
0.000 5.604 0.000 : _SimplifyOctree
0.021 5.624 0.021 : SimplifyOctree
0.000 5.624 0.000 : BuildOctree
0.000 5.624 0.000 : _GenerateMeshFromOctree
0.001 5.626 0.001 : GenerateMeshFromOctree
0.000 5.626 0.000 : _CollectTriangles
0.002 5.628 0.002 : CollectTriangles
2017-03-24 14:24:03.515 INFO [1578213] [*GMaker::makeFromCSG@130] GMaker::makeFromCSG tessa DCS numTris 4090 mi (-150.03 -150.03 -250.33) mx ( 250.03 250.03 250.33)
ConstructOctreeNodes count 299593
In [101]: print "\n".join(map(oct_, range(16)))
0 1 1 1
1 2 8 9
2 4 64 73
3 8 512 585
4 16 4,096 4,681
5 32 32,768 37,449
6 64 262,144 299,593 <<<
7 128 2,097,152 2,396,745
8 256 16,777,216 19,173,961
9 512 134,217,728 153,391,689
10 1,024 1,073,741,824 1,227,133,513
------------------------------------------------------------------
11 2,048 8,589,934,592 9,817,068,105
12 4,096 68,719,476,736 78,536,544,841
13 8,192 549,755,813,888 628,292,358,729
14 16,384 4,398,046,511,104 5,026,338,869,833
15 32,768 35,184,372,088,832 40,210,710,958,665