> On 28 Sep 2015, at 18:42, Alex Kac <[email protected]> wrote: > > We had the same question and I asked it at WWDC. A few things I was told: > > 1. El Capitan improves string drawing performance tremendously. That may > solve your problem. > 2. They recommended in our case actually using NSTextFields for each string. > They showed me an app that had thousands of NSTextFIelds in a resizable > window and it was buttery smooth. Smoother than the same code using NSString > drawing functions in the exact same scenario. > > Now 100,000 strings may change the equation a bit…but might be worth a quick > try. > <snip> > Alex Kac - El capitán
Just for a final follow-up now El Capitan is public. 0. I really am not trying to draw the whole view at once. It's just that you can scroll the whole grid vertically or horizontally in a single flick on a trackpad in about a second. 1. I should have mentioned that I am writing in Swift. I've become so accustomed to it that it's easy to forget it still has some slower bits. Using NSString's drawInRect:withAttributes: wants a Swift dictionary of attributes. Instruments showed a lot of time spend accessing the elements of this dictionary and converting back to Objective-C land. Converting the string to be drawn to an NSAttributedString and adding attributes to it directly before drawing with drawInRect: resulted in string drawing dropping from ~65% of drawRect time to ~50%. 2. Upgraded to 10.11 overnight last night and ran the same profile again. drawRect now spends around 35% of time drawing strings. The calls underneath drawInRect look vastly different. Thank you to whoever put this work in at Apple. Drawing speed of the control is now fine and scrolling is smooth. I will have a small play with drawing options in case there more headroom that can be quickly gained, but am currently very happy. Thank you all for the assistance. - Ben _______________________________________________ Cocoa-dev mailing list ([email protected]) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [email protected]
