• 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: Performance of calculation on float point numbers in a array • NSNumber in NSArray, or classic C array?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Performance of calculation on float point numbers in a array • NSNumber in NSArray, or classic C array?


  • Subject: Re: Performance of calculation on float point numbers in a array • NSNumber in NSArray, or classic C array?
  • From: Rich Collyer <email@hidden>
  • Date: Thu, 18 Dec 2008 10:00:49 -0800

"bit stupid" - no, but..

The resulting assembly from:

NSArray testArray = [NSArray alloc] init];
// TODO: fill array with a bunch of NSNumbers (floats)

int i;
float bigNum;
for (i = 0; i < [testArray count]; ++i)
{
	bigNum *= [testArray objectAtIndex:i];
}

Will be a bit slower than the assembly of:

float testArray[SIZEOFARRAY];
// TODO: fill array with a bunch of floats

int i;
float bigNum;
for (i = 0; i < SIZEOFARRAY; ++i)
{
	bigNum *= testArray[i];
}

mainly because the c array and be stuffed into a processor register and there are no object manipulations involved.

However, you never know when Apple will do something tricky with Grand Central Dispatch that will void this argument.

+++++++++++++++++++++++
Rich Collyer - Senior Software Engineer
email@hidden

IronKey - The World's Most Secure Flash Drive
2008 SC Magazine Readers Choice Award Winner
2008 FOSE Best of Show Winner
2007 GCN Labs Reviewers Choice Winner
+++++++++++++++++++++++




On Dec 17, 2008, at 12:04 PM, Stanislas Krásnaya wrote:

Hello everyone!

I've got a basic question. I'm sure this is a very vast debate, since I've found several answers on the subject, but I'm not satisfied.


I've read that, since we're programming in Objective-C, it's more elegant and reliable to use an NSArray stuffed with NSNumber instead of a classic C array. But what I want to do, it's performing classic calculation, like mean value, variance... etc, on floating point numbers. Typically around 1000 of them.


I know that our computers are fast now, but this doesn't mean that we have to not take care of optimization.


So, since NSArray is designed to store all kinds of NSObject's, and mine will just store some NSNumber's, wouldn't it be a bit stupid to use it?


Thanks in advance.


Stanislas _______________________________________________

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:
@ironkey.com


This email sent to email@hidden

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________

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

References: 
 >Performance of calculation on float point numbers in a array • NSNumber in NSArray, or classic C array? (From: Stanislas Krásnaya <email@hidden>)

  • Prev by Date: Re: NSTableView cross-coupling rows when editing strings?
  • Next by Date: subclassing NSApplication run
  • Previous by thread: Re: Performance of calculation on float point numbers in a array • NSNumber in NSArray, or classic C array?
  • Next by thread: Receiving controlTextDidChange: from change in bound value?
  • Index(es):
    • Date
    • Thread