On 2013/08/11 21:07:03, dak wrote:
It's conceivable that this change helped, though there don't seem to be a lot of opportunities for garbage collection between return of the SCM value and use of the Skyline_pair.
There is ample opportunity for garbage generation and garbage collection. The call to maybe_pure_coordinate() estimates positions for everything in the score, which causes a lot of computation and memory use. Adding the two tracer printf()s below, I see a SCM object holding the skyline for the "Presto" is returned, then two hundred twenty three other skylines are created, side-positioned, and discarded, then the pointer into the skyline for the "Presto" is accessed. https://codereview.appspot.com/12708048/diff/1/lily/side-position-interface.cc File lily/side-position-interface.cc (right): https://codereview.appspot.com/12708048/diff/1/lily/side-position-interface.cc#newcode216 lily/side-position-interface.cc:216: Skyline my_dim; if (pure) printf("Storing pointer to skyline of a %s\n", me->name().c_str()); https://codereview.appspot.com/12708048/diff/1/lily/side-position-interface.cc#newcode238 lily/side-position-interface.cc:238: : me->get_parent (Y_AXIS)->maybe_pure_coordinate (common[Y_AXIS], Y_AXIS, pure, start, end); if (pure) printf("Accessing pointer to skyline of a %s\n", me->name().c_str()); https://codereview.appspot.com/12708048/ _______________________________________________ lilypond-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-devel
