Frustrated by slow range commands, I did a little optimization today.

I cut the time to about 40% of what it used to take. 
Segment::setStartTime was the main culprit.  It used to erase and insert
every event, with full notifications, causing enormous redundant
recalculation.  computeSegmentOrigin, computeSegmentRect, and
rebuildVoiceCaches were called a truly astounding number of times for one
command.

Now setStartTime runs like greased lightning (averaging 11.886238000
milliseconds on my stuff).

Now the main culprit, taking almost all of the remaining time, is
SegmentLinker::linkedSegmentChanged and its calltree.  Like
Segment::setStartTime used to do, it copies every Event, with full
notifications both erasing and inserting.

SegmentLinker I'm more loathe to fool around with:
 * I'd be treading on Ian's area of expertise.
 * It seems like he had planned more for it, so it's a work in
   progress.

So I'll commit what I have.

        Tom Breton (Tehom)



------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Rosegarden-devel mailing list
Rosegarden-devel@lists.sourceforge.net - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel

Reply via email to