Es la diferencia entre el uso de mach_absolute_time y el simple NSDate método explicado por golden eagle abajo?

Aquí una excelente explicación de la utilización de la mach enfoque…

¿Cómo puedo con precisión cuánto tiempo se necesita para llamar a una función en el iPhone?

y

Medir el tiempo entre la llamada de la biblioteca y de devolución de llamada

InformationsquelleAutor Fattie | 2011-01-23

2 Comentarios

  1. 76
    loop
      {
       NSDate *start = [NSDate date];
    
      //a considerable amount of difficult processing here
      //a considerable amount of difficult processing here
      //a considerable amount of difficult processing here
    
       NSDate *methodFinish = [NSDate date];
       NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:start];
    
       NSLog(@"Execution Time: %f", executionTime);
      }

    Debería funcionar.

    • ¿La respuesta a resolver su problema?
    • Bueno, iPhone devs, todos a tomar un café.
  2. 2

    Sobre la anterior respuesta me han implementado una clase simple para medir el tiempo

    Cómo funciona:

    ABTimeCounter *timer = [ABTimeCounter new];
    [timer restart];
    
    //do some calculations
    
    [timer pause];
    
    //do some other staff
    
    [timer resume];
    
    //other code
    
    //You can measure current time immediately
    
    NSLog(@"Time left from starting calculations: %f seconds",[timer measuredTime]); 
    
    [timer pause];

    su .h archivo debería tener este aspecto:

    @interface ABTimeCounter : NSObject
    @property (nonatomic, readonly) NSTimeInterval measuredTime;
    
    - (void)restart;
    - (void)pause;
    - (void)resume;
    
    @end

    .m de archivo:

    @interface ABTimeCounter ()
    @property (nonatomic, strong) NSDate *lastStartDate;
    @property (nonatomic) BOOL isCounting;
    @property (nonatomic, readwrite) NSTimeInterval accumulatedTime;
    @end
    
    @implementation ABTimeMeasure
    
    #pragma mark properties overload
    
    - (NSTimeInterval) measuredTime
    {
        return self.accumulatedTime + [self p_timeSinceLastStart];
    }
    
    #pragma mark - public -
    
    - (void) restart
    {
        self.accumulatedTime = 0;
        self.lastStartDate = [NSDate date];
        self.isCounting = YES;
    }
    
    - (void) pause
    {
        if (self.isCounting){
            self.accumulatedTime += [self p_timeSinceLastStart];
            self.lastStartDate = nil;
            self.isCounting = NO;
        }
    }
    
    - (void) resume
    {
        if (!self.isCounting){
            self.lastStartDate = [NSDate date];
            self.isCounting = YES;
        }
    }
    
    #pragma mark - private -
    
    - (NSTimeInterval) p_timeSinceLastStart
    {
        if (self.isCounting){
            return [[NSDate date] timeIntervalSinceDate:self.lastStartDate];
        }
        else return 0;
    }
    
    @end
    • No reinventar la rueda. Votada abajo.
    • podría usted por favor proporcione más detalles de tu comentario?

Dejar respuesta

Please enter your comment!
Please enter your name here