-
-
Save acefsm/cd3e6b1b8e6bc93cd01a40196f4862e8 to your computer and use it in GitHub Desktop.
Timing Utility Post 20120308
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CGFloat BNRTimeBlock (void (^block)(void)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <mach/mach_time.h> // for mach_absolute_time() and friends | |
CGFloat BNRTimeBlock (void (^block)(void)) { | |
mach_timebase_info_data_t info; | |
if (mach_timebase_info(&info) != KERN_SUCCESS) return -1.0; | |
uint64_t start = mach_absolute_time (); | |
block (); | |
uint64_t end = mach_absolute_time (); | |
uint64_t elapsed = end - start; | |
uint64_t nanos = elapsed * info.numer / info.denom; | |
return (CGFloat)nanos / NSEC_PER_SEC; | |
} // BNRTimeBlock |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define LOOPAGE 10000000 | |
#import "BNRTimeBlock.h" | |
int main (void) { | |
CGFloat time; | |
NSString *thing1 = @"hi"; | |
NSString *thing2 = @"hello there"; | |
time = BNRTimeBlock(^{ | |
for (int i = 0; i < LOOPAGE; i++) { | |
[thing1 isEqual: thing2]; | |
} | |
}); | |
printf ("isEqual: time: %f\n", time); | |
time = BNRTimeBlock(^{ | |
for (int i = 0; i < LOOPAGE; i++) { | |
[thing1 isEqualToString: thing2]; | |
} | |
}); | |
printf ("isEqualToString: time: %f\n", time); | |
return 0; | |
} // main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment