2017/04/28
今更だけど肝心のNSLogで出力を最後に入れ忘れてた...
重たい処理を高速化する時の目安程度に作ってみた
時間計測クラス
Measure.h
# import <Foundation/Foundation.h>
# ifdef DEBUG
//デバッグ時だけ計測
# define MEASURE_START [Measure measureMethod:^{
# define MEASURE_END_M(message) } withMessage:(message)];
# define MEASURE_END }];
# else
# define MEASURE_START
# define MEASURE_END_M(message)
# define MEASURE_END
# endif
typedef void (^measureBlock)();
@interface Measure : NSObject
+(void)measureMethod:(measureBlock)block;
+(void)measureMethod:(measureBlock)block withMessage:(NSString *)message;
@end
Measure.m
# import "Measure.h"
@implementation Measure
+(void)measureMethod:(measureBlock)block{
[Measure measureMethod:block withMessage:nil];
}
+(void)measureMethod:(measureBlock)block withMessage:(NSString *)message{
NSDate *start = [NSDate date];
block();
NSTimeInterval time = -[start timeIntervalSinceNow];
NSString *log = [NSString stringWithFormat:@"process time = %lf", time];
if (message) {
log = [NSString stringWithFormat:@"%@ process time = %lf", message, time];
}
NSLog(@"%@", log);
}
@end
使い方
howToUse.m
# import "Measure.h"
.
.
.
//メッセージをつけない場合
MEASURE_START
[self hogehoge1];
MEASURE_END
//戻り値がない場合
MEASURE_START
[self hogehoge1];
MEASURE_END_M(@"[hogehoge1]")
//戻り値がある場合 __blockがいるよ
__block UIImage *hogeImg = nil;
MEASURE_START
hogeImg =[self hogehoge2];
MEASURE_END_M(@"[hogehoge2]")
.
.
.
出力
process time = 0.065342
[hogehoge1] process time = 0.065342
[hogehoge2] process time = 0.12345