On 2008-06-09 18:41:23 -0700, "Colin A. Smith" <[EMAIL PROTECTED]> said:
> On Jun 9, 2008, at 17:36, Adam R. Maxwell wrote: > >> What did the profiles look like? Was it memory or processor >> intensive? >> I'm curious because I've observed tracking rects as a minor >> performance >> hit on FileView as well, mainly due to Leopard creating a large number >> of temporary objects. > > I tried profiling once but that didn't seem to turn up anything > particularly insightful on first glance. There aren't any large spikes > in CPU usage either. The real problem is with perceived performance > more than anything else. Hmmm...IME profiling is the only way to know if a change like this has an effect, or if you're chasing a red herring. I'd try setting Shark for a time profile and then scrolling up/down using the trackpad for a few seconds, then repeat with a malloc trace. >> Clever :). Does it help at all to do something like [[OFMessageQueue >> mainQueue] queueSelectorOnce:... for rebuildTrackingRects? That might >> be more future-proof. > > I think that might help a bit but is still going to allow > rebuildTrackingRects calls while a user is actively scrolling. While > rebuildTrackingRects is running, nothing else on the main thread can > run and processing scroll events is significantly poorer. The worst > case, in which scroll events and rebuildTrackingRects, would still be > possible. Right; I forgot that OFMessageQueue is based on NSConditionLock instead of NSRunloop :/. However, if you used something like this - (void)scheduleRebuildTrackingRects { if (!_scheduledRebuildTrackingRects) { [self performSelector:@selector(rebuildTrackingRects) withObject:nil afterDelay:0 inModes:[NSArray arrayWithObject:NSDefaultRunLoopMode]; _scheduledRebuildTrackingRects = YES; } } - (void)rebuildTrackingRects { _scheduledRebuildTrackingRects = NO; ... } then it wouldn't rebuild tracking rects while in NSEventTrackingRunLoopMode, which is what the scrollview should be using (hypothetically, at least; I use this trick in FileView to deal with icon scale changes). -- adam ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Bibdesk-develop mailing list Bibdesk-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-develop