Hi,

I am constructing an application that draws rooted trees (graphs with a
distinguished 'first' node) by creating an NSView subclass for each node and
adding them as subviews of the graph view.

There is a big problem when the number of nodes in the tree is large: adding
the subviews takes a very long time.  For example, one of my trees has
around 60,000 nodes.  It takes about 1.5 seconds to create all of the
objects, and about 200 seconds to add them as subviews.

Can anyone suggest a way to speed the process up?  Multithreading didn't
really improve matters.

Each node keeps track of its child nodes in an NSArray, and the subview
addition is recursive:

- (void) add
{
    NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];

    [[parent superview] addSubview:self];
    for (Vertex * child in children)
        [child performSelectorOnMainThread:@selector(add) withObject:nil
waitUntilDone:NO];
        //[child add];

    [autoreleasepool release];
}

Thanks,

Josh
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to