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