Created
          March 9, 2012 13:51 
        
      - 
      
 - 
        
Save bignerdranch/2006587 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
  
            
Here's a swift version: