|
From: | Auto mailings of changes to Lily Issues via Testlilyissues-auto |
Subject: | [Lilypond-auto] [LilyIssues-auto] [testlilyissues:issues] #5951 Calculate skylines only once. |
Date: | Fri, 08 May 2020 13:06:49 -0000 |
commit 750d6a547567409b6aa2d49bcb34912774aae4bc Author: Han-Wen Nienhuys <address@hidden> AuthorDate: Sun Apr 26 15:39:01 2020 +0200 Commit: Han-Wen Nienhuys <address@hidden> CommitDate: Fri May 8 09:14:16 2020 +0200 Calculate skylines only once. Before, Axis_group_interface::skyline_spacing() would call the function add_interior_skylines(), which recursed into VerticalAxisGroups. This caused staff-skylines to be computed twice: once as part of the Staff's VerticalAxisGroup, and once to compute the skyline for System. Instead, in Axis_group_interface::skyline_spacing(), compute the vertical-skylines for all constituent elements. Since the property is subject to caching, the Staff skyline is only computed once. To make this work * Add flags to the NoteColumn using Axis_group_interface::add_element * add vertical-skylines callbacks for NoteColumn and NoteCollision, which are also X,Y Axis groups. * declare add-stem-support for bass figures (or the digits are meshed in with stems that stick out of the staff.) * calculate a skyline for BassFigureAlignment, otherwise, the skyline is computed from the extent of the alignment, which is inaccurate if some bass figures have accidentals. Formatting impact: * ottava-edge.ly - the ottava bracket meshes better with the stem, leading to tighter spacing. Timing impact ac49229cdf - Calculate skylines only once. baseline: eaf40071f5 Use vectors rather than lists for skylines. args: -I carver MSDM memory: med diff 1916 (stddevs 103 135, n=5) memory: med diff 0.2 % (ac49229cdf is fatter) time: med diff -0.37 (stddevs 0.08 0.14, n=5) time: med diff -0.8 % (ac49229cdf is faster)
[issues:#5951] Calculate skylines only once.
Status: Fixed
Labels: Fixed_2_21_2
Created: Fri May 01, 2020 05:52 PM UTC by Han-Wen Nienhuys
Last Updated: Thu May 07, 2020 08:51 AM UTC
Owner: Han-Wen Nienhuys
Before, Axis_group_interface::skyline_spacing() would call the
function add_interior_skylines(), which recursed into
VerticalAxisGroups. This caused staff-skylines to be computed twice:
once as part of the Staff's VerticalAxisGroup, and once to compute
the skyline for System.
Instead, in Axis_group_interface::skyline_spacing(), compute the
vertical-skylines for all constituent elements. Since the property is
subject to caching, the Staff skyline is only computed once.
To make this work
Add flags to the NoteColumn using Axis_group_interface::add_element
add vertical-skylines callbacks for NoteColumn and
NoteCollision, which are also X,Y Axis groups.
declare add-stem-support for bass figures (or the digits are meshed
in with stems that stick out of the staff.)
calculate a skyline for BassFigureAlignment, otherwise, the skyline
is computed from the extent of the alignment, which is inaccurate if
some bass figures have accidentals.
Formatting impact:
Timing impact
ac49229cdf - Calculate skylines only once.
baseline: eaf40071f5 Use vectors rather than lists for skylines.
args: -I carver MSDM
memory: med diff 1916 (stddevs 103 135, n=5)
memory: med diff 0.2 % (ac49229cdf is fatter)
time: med diff -0.37 (stddevs 0.08 0.14, n=5)
time: med diff -0.8 % (ac49229cdf is faster)
https://codereview.appspot.com/553980043
Sent from sourceforge.net because address@hidden is subscribed to https://sourceforge.net/p/testlilyissues/issues/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/testlilyissues/admin/issues/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.
_______________________________________________ Testlilyissues-auto mailing list address@hidden https://lists.sourceforge.net/lists/listinfo/testlilyissues-auto
[Prev in Thread] | Current Thread | [Next in Thread] |