Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import <Foundation/Foundation.h>
- #include <mach/mach_time.h>
- #include <stdint.h>
- void stringTest()
- {
- mach_timebase_info_data_t info;
- mach_timebase_info(&info);
- uint64_t startTime;
- uint64_t endTime;
- NSMutableArray *shortStringPool=[NSMutableArray arrayWithCapacity:10000];
- NSMutableArray *longStringPool=[NSMutableArray arrayWithCapacity:10000];
- NSMutableDictionary *shortDictionary10k=[NSMutableDictionary dictionary];
- NSMutableDictionary *shortDictionary200=[NSMutableDictionary dictionary];
- NSMutableDictionary *longDictionary10k=[NSMutableDictionary dictionary];
- NSMutableDictionary *longDictionary200=[NSMutableDictionary dictionary];
- for(int i=0; i<10000; i++)
- {
- NSString *shortString=[NSString stringWithFormat:@"0123456789%d", i];
- [shortString hash];
- [shortStringPool addObject:shortString];
- NSString *longString=[NSString stringWithFormat:@"01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789%d", i];
- [longString hash];
- [longStringPool addObject:longString];
- };
- // Short string hash test, 10000 each.
- startTime = mach_absolute_time();
- for(int i=0; i<10000; i++)
- {
- [[shortStringPool objectAtIndex:i] hash];
- };
- endTime = mach_absolute_time();
- printf("Short strings, hash test, 10000 each: %f\n", (((double)(endTime-startTime))*((double)info.numer/(double)info.denom))/10000.0);
- // Long string hash test, 10000 each.
- startTime = mach_absolute_time();
- for(int i=0; i<10000; i++)
- {
- [[longStringPool objectAtIndex:i] hash];
- };
- endTime = mach_absolute_time();
- printf("Long strings, hash test, 10000 each: %f\n", (((double)(endTime-startTime))*((double)info.numer/(double)info.denom))/10000.0);
- // Short string test, 10000 each.
- for(int i=0; i<10000; i++)
- {
- [shortDictionary10k setObject:[NSNull null] forKey:[shortStringPool objectAtIndex:i]];
- };
- startTime = mach_absolute_time();
- for(int i=0; i<10000; i++)
- {
- [shortDictionary10k objectForKey:[shortStringPool objectAtIndex:i]];
- };
- endTime = mach_absolute_time();
- printf("Short strings, 10000 each: %f\n", (((double)(endTime-startTime))*((double)info.numer/(double)info.denom))/10000.0);
- // Short string test, 200 each.
- for(int i=0; i<200; i++)
- {
- [shortDictionary200 setObject:[NSNull null] forKey:[shortStringPool objectAtIndex:i]];
- };
- startTime = mach_absolute_time();
- for(int i=0; i<200; i++)
- {
- [shortDictionary200 objectForKey:[shortStringPool objectAtIndex:i]];
- };
- endTime = mach_absolute_time();
- printf("Short strings, 200 each: %f\n", (((double)(endTime-startTime))*((double)info.numer/(double)info.denom))/200.0);
- // Long string test, 10000 each.
- for(int i=0; i<10000; i++)
- {
- [longDictionary10k setObject:[NSNull null] forKey:[longStringPool objectAtIndex:i]];
- };
- startTime = mach_absolute_time();
- for(int i=0; i<10000; i++)
- {
- [longDictionary10k objectForKey:[longStringPool objectAtIndex:i]];
- };
- endTime = mach_absolute_time();
- printf("Long strings, 10000 each: %f\n", (((double)(endTime-startTime))*((double)info.numer/(double)info.denom))/10000.0);
- // Long string test, 200 each.
- for(int i=0; i<200; i++)
- {
- [longDictionary200 setObject:[NSNull null] forKey:[longStringPool objectAtIndex:i]];
- };
- startTime = mach_absolute_time();
- for(int i=0; i<200; i++)
- {
- [longDictionary200 objectForKey:[longStringPool objectAtIndex:i]];
- };
- endTime = mach_absolute_time();
- printf("Long strings, 200 each: %f\n\n", (((double)(endTime-startTime))*((double)info.numer/(double)info.denom))/200.0);
- };
- int main(int argc, const char * argv[])
- {
- @autoreleasepool
- {
- for(int i=0; i<10; i++) stringTest();
- };
- return 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment