提交 d327e367 编写于 作者: Y yixiang

fps的计算聚合到DoraemonFPSUtil这个类中

上级 ee00359c
......@@ -12,16 +12,15 @@
#import "DoraemonMemoryUtil.h"
#import "DoraemonNetFlowManager.h"
#import "DoraemonNetFlowDataSource.h"
#import "DoraemonFPSUtil.h"
@interface DoraemonAllTestManager()
//每秒运行一次
@property (nonatomic, strong) NSTimer *secondTimer;
@property (nonatomic, strong) CADisplayLink *link;
@property (nonatomic, assign) NSUInteger count;
@property (nonatomic, assign) NSTimeInterval lastTime;
@property (nonatomic, assign) NSInteger fpsValue;
@property (nonatomic, strong) DoraemonFPSUtil *fpsUtil;
@property (nonatomic, strong) NSMutableArray *commonDataArray;
......@@ -46,12 +45,14 @@
_secondTimer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(doSecondFunction) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:_secondTimer forMode:NSRunLoopCommonModes];
if(_fpsSwitchOn){
if (_link) {
_link.paused = NO;
}else{
_link = [CADisplayLink displayLinkWithTarget:self selector:@selector(trigger:)];
[_link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
if (!_fpsUtil) {
_fpsUtil = [[DoraemonFPSUtil alloc] init];
__weak typeof(self) weakSelf = self;
[_fpsUtil addFPSBlock:^(NSInteger fps) {
weakSelf.fpsValue = fps;
}];
}
[_fpsUtil start];
}
}
if(_flowSwitchOn){
......@@ -114,12 +115,8 @@
[_secondTimer invalidate];
_secondTimer = nil;
}
if (_link) {
_link.paused = YES;
[_link invalidate];
_link = nil;
_lastTime = 0;
_count = 0;
if (_fpsUtil) {
[_fpsUtil end];
}
[self upLoadData];
......@@ -130,23 +127,6 @@
}
- (void)trigger:(CADisplayLink *)link{
if (_lastTime == 0) {
_lastTime = link.timestamp;
return;
}
_count++;
NSTimeInterval delta = link.timestamp - _lastTime;
if (delta < 1) return;
_lastTime = link.timestamp;
CGFloat fps = _count / delta;
_count = 0;
NSInteger intFps = (NSInteger)(fps+0.5);
_fpsValue = intFps;
}
- (void)doSecondFunction{
//1、获取当前时间戳
NSDate *now = [NSDate date];
......
......@@ -10,14 +10,13 @@
#import "DoraemonDefine.h"
#import "DoraemonCacheManager.h"
#import "DoraemonFPSOscillogramWindow.h"
#import "DoraemonFPSUtil.h"
@interface DoraemonFPSOscillogramViewController ()
@property (nonatomic, strong) DoraemonOscillogramView *oscillogramView;
@property (nonatomic, strong) CADisplayLink *link;
@property (nonatomic, assign) NSUInteger count;
@property (nonatomic, assign) NSTimeInterval lastTime;
@property (nonatomic, strong) DoraemonFPSUtil *fpsUtil;
@end
......@@ -26,6 +25,7 @@
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor clearColor];
[self setEdgesForExtendedLayout:UIRectEdgeNone];
......@@ -58,46 +58,23 @@
[[DoraemonFPSOscillogramWindow shareInstance] hide];
}
- (void)trigger:(CADisplayLink *)link{
if (_lastTime == 0) {
_lastTime = link.timestamp;
return;
}
_count++;
NSTimeInterval delta = link.timestamp - _lastTime;
if (delta < 1) return;
_lastTime = link.timestamp;
CGFloat fps = _count / delta;
_count = 0;
NSInteger intFps = (NSInteger)(fps+0.5);
// 0~60 对应 高度0~_oscillogramView.doraemon_height
[_oscillogramView addHeightValue:fps*_oscillogramView.doraemon_height/60. andTipValue:[NSString stringWithFormat:@"%zi",intFps]];
}
- (void)startRecord{
if (_link) {
_link.paused = NO;
}else{
_link = [CADisplayLink displayLinkWithTarget:self selector:@selector(trigger:)];
[_link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
if (!_fpsUtil) {
_fpsUtil = [[DoraemonFPSUtil alloc] init];
__weak typeof(self) weakSelf = self;
[_fpsUtil addFPSBlock:^(NSInteger fps) {
// 0~60 对应 高度0~_oscillogramView.doraemon_height
[weakSelf.oscillogramView addHeightValue:fps*_oscillogramView.doraemon_height/60. andTipValue:[NSString stringWithFormat:@"%zi",fps]];
}];
}
[_fpsUtil start];
}
- (void)endRecord{
if (_link) {
_link.paused = YES;
[_link invalidate];
_link = nil;
[_oscillogramView clear];
_lastTime = 0;
_count = 0;
if (_fpsUtil) {
[_fpsUtil end];
}
}
- (void)addRecortArray:(NSArray *)recordArray {
[_oscillogramView addRecortArray:recordArray];
[_oscillogramView clear];
}
@end
//
// DoraemonFPSUtil.h
// AFNetworking
//
// Created by yixiang on 2019/5/9.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^DoraemonFPSBlock)(NSInteger fps);
@interface DoraemonFPSUtil : NSObject
- (void)start;
- (void)end;
- (void)addFPSBlock:(DoraemonFPSBlock)block;
@end
NS_ASSUME_NONNULL_END
//
// DoraemonFPSUtil.m
// AFNetworking
//
// Created by yixiang on 2019/5/9.
//
#import "DoraemonFPSUtil.h"
@interface DoraemonFPSUtil()
@property (nonatomic, strong) CADisplayLink *link;
@property (nonatomic, assign) NSUInteger count;
@property (nonatomic, assign) NSTimeInterval lastTime;
@property (nonatomic, assign) BOOL isStart;
@property (nonatomic, assign) NSInteger fps;
@property (nonatomic, copy) DoraemonFPSBlock block;
@end
@implementation DoraemonFPSUtil
- (instancetype)init{
self = [super init];
if (self) {
_isStart = NO;
_count = 0;
_lastTime = 0;
}
return self;
}
- (void)start{
if (_link) {
_link.paused = NO;
}else{
_link = [CADisplayLink displayLinkWithTarget:self selector:@selector(trigger:)];
[_link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
}
}
- (void)end{
if (_link) {
_link.paused = YES;
[_link invalidate];
_link = nil;
_lastTime = 0;
_count = 0;
}
}
- (void)trigger:(CADisplayLink *)link{
if (_lastTime == 0) {
_lastTime = link.timestamp;
return;
}
_count++;
NSTimeInterval delta = link.timestamp - _lastTime;
if (delta < 1) return;
_lastTime = link.timestamp;
CGFloat fps = _count / delta;
_count = 0;
NSInteger intFps = (NSInteger)(fps+0.5);
self.fps = intFps;
if (self.block) {
self.block(self.fps);
}
}
- (void)addFPSBlock:(void(^)(NSInteger fps))block{
self.block = block;
}
- (void)dealloc{
NSLog(@"fps dealloc");
}
@end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册