On May 4, 2009, at 4:50 PM, Colin Cornaby wrote:
I'm dealing with some code that returns results out of order, but the results contain the proper index. In the end, I'd like to put them all into an NSArray, but unlike a C array, NSArray doesn't seem to allow me to simply reserve X number of slots and fill the slots as the results come in.

One workaround I can see is to actually store the results in a C array, and then initialize the NSArray from the C array. I could also write an algorithm that would try to rearrange the NSMutableArray as results come back, but that seems more complicate. Initializing from a C array looks like the best bet, but this is a commonly called function of the software that is performance sensitive, and could be dealing with large sets of data, so I was wondering about the overhead of this approach.

The C array may be the fastest because the C array and - initWithObjects:count: are both fast, but will occupy double the memory.

One alternative is to start by filling the array with some dummy object like `[NSNull null]` or `@""`. That would use less memory, but incur extra time overhead for inserting the dummy objects. But if NSArray isn't already too slow for your use then that additional time should be palatable. Here you would create the array with - initWithCapacity: to avoid extra memory reallocations while it grows.


--
Greg Parker     gpar...@apple.com     Runtime Wrangler


_______________________________________________

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