• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
re: Re: [__NSFastEnumerationEnumerator nextObject] unexpectedly not very fast!
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

re: Re: [__NSFastEnumerationEnumerator nextObject] unexpectedly not very fast!


  • Subject: re: Re: [__NSFastEnumerationEnumerator nextObject] unexpectedly not very fast!
  • From: Ben Trumbull <email@hidden>
  • Date: Fri, 25 Sep 2009 10:38:57 -0700

In summary, the existence of fast enumeration does nothing for
existing enumeration technologies and if you have to support
10.4 (as I do) you simply can't use it unless you fork your code.

My solution, in the few cases where performance is paramount,
has been to essentially roll my own fast enumeration. For very
large arrays (thousands of objects) I'll get blocks of objects
in batching using [NSArray getObjects:range:], process those in
a tight C loop, and then get another batch.

The for (in) construct is by far the most optimized general purpose way to work with any of the collections in Cocoa on 10.5, 10.6, and iPhone OS. It's also polymorphic, so custom collection subclasses can fine tune the behavior.


If you have to hand roll your own, either for 10.4, or some specialized case, your best bet is to use -getObjects: into a local buffer. gcc supports variable length arrays, and that's the fastest way to marshall these batches temporarily. You'll want to be very careful to do length checks to not overrun your stack, and limit the size. If you have somewhere between 256 & 512 objects, give or take, you'll have to malloc a temporary id* Overflowing the stack is not pretty.

- Ben



_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


  • Follow-Ups:
    • Re: [__NSFastEnumerationEnumerator nextObject] unexpectedly not very fast!
      • From: Charles Srstka <email@hidden>
  • Prev by Date: Re: Displaying characters from the 'Unicode Symbols' font ??
  • Next by Date: Re: Displaying characters from the 'Unicode Symbols' font ??
  • Previous by thread: Re: Displaying characters from the 'Unicode Symbols' font ??
  • Next by thread: Re: [__NSFastEnumerationEnumerator nextObject] unexpectedly not very fast!
  • Index(es):
    • Date
    • Thread