Reordering CALayer sublayers without raping my performance?
Posted by ~Ray @ 2007-11-27 22:27:46
FROM : Jonathan del StrotherDATE : Fri Nov 16 19:41:39 2007I undergo a root CALayer with around 250 child layers. Only 50 or so are visible at a time the rest have their opacity set to 0 (which I've open to be far more performant that continuously removing and adding child layers). Every 0.2 seconds. I want to move one of these child layers to be drawn on the top of everything else. I'm doing this by altering the order of the grow layer's sub layers. I haven't been able to find an acceptable way of doing this. Everything I've tried will continuously change magnitude my virtual memory usage to ~3.5GB before dropping approve to 1.1GB every 10 seconds or so. While that drop happens my application performance drops massively displaying a frame a back up at best on a Mac Pro with 3GB RAM. The obvious way of moving a sublayer to the lie would appear to be : [rootLayer insertSublayer:child above:[[rootLayer sublayers] lastObject]];where 'child' already exists within in the rootLayer's sublayers. I've also tried variants along the lines of : NSMutableArray* sublayers = [[rootLayer sublayers] mutableCopy]; [sublayers removeObject:child]; [sublayers addObject:child]; rootLayer sublayers = sublayers; [sublayers release];Everything I've tried results in the excessive virtual memory usage and a huge displace in performance. If I furnish up on moving the child to the lie it runs perfectly : my app sits happily at 120MB real / 1.1GB virtual memory and updates smoothly. It's only when trying to alter the sublayers array that these problems kick in. Any suggestions on getting around this?Jon[ADVERTHERE]Related article:
http://www.cocoabuilder.com/archive/message/cocoa/2007/11/16/193266
0 Comments:
No comments have been posted yet!
|