Hi all,
I am using a dictionary to hold business objects. As the key I use
a class SOObjectID which basically looks as follows:
@interface SOObjectID : NSObject < NSCopying, SRArchivingProtocol >
{
int _identifier; // entity
int _primaryKey;
}
- (unsigned int)hash
{
return (_primaryKey * 1000 + _identifier);
}
- (BOOL)isEqual:(id)object
{
if (self == object) return YES;
if ([object isKindOfClass:[SOObjectID class]])
{
return ([(SOObjectID *)object identifier] == _identifier &&
[(SOObjectID *)object primaryKey] == _primaryKey);
}
else return NO;
}
I am hitting a serious performance problem when holding many
objects in the dictionary. Currently I am running a test with 3 GB
of data loaded into the process (running under Solaris 10) and it's
getting slow as hell. The machine has 16 GB of RAM so swapping is
not an issue. I know that the above is not the cutest way to hold
great chunks of data. I already wondered whether it would be a good
idea to replace the NSDictionary with something that uses a binary
tree to hold the data. However, since this is not done in a couple
of minutes I would appreciate to find an easier solution for now.
How many objects should a dictionary be able to handle with
reasonable performance? Anything I could do in my SOGlobalID class
to improve performance?
Thanks a lot!
Regards,
Andreas
_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnustep