bonus-material-app/nativeplugins/Mpaas-Scan/ios/mPaas.framework/Headers/MPaaS+MonitorStartUpTime.h

94 lines
2.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// MPaaS+MonitorStartUpTime.h
// APMPaaS
//
// Created by qiwei on 16/10/12.
// Copyright © 2016年 Alipay. All rights reserved.
//
#ifndef MPaaS_MonitorStartUpTime_h
#define MPaaS_MonitorStartUpTime_h
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
/**
全局变量,程序启动的开始时刻
使用方法: 声明后使用,但不要修改
系统时间时刻,随系统时间变化而变化
实现原理: CFAbsoluteTimeGetCurrent()
注:不建议使用
*/
extern CFTimeInterval globalMonitorStartUpTime;
/**
全局变量,程序启动的开始时刻
使用方法: 声明后使用,但不要修改
相对开机时刻,不随系统时间变化而变化
实现原理: CACurrentMediaTime()
注:建议使用
*/
extern CFTimeInterval globalRelativeStartUpTime;
/**
设置App启动的最早时刻。
一般在主进程的第一个+load方法中设置。
如果有自动链接的动态库,则建议放在第一个动态库的第一个+load方法中。
*/
extern void MPStartupTimeMarkAppStartPoint();
/**
设置启动过程中的某个时刻,例如 main,didfinishlaunch,dbinit
内部会减去app启动的最早时刻
*/
extern void MPStartupTimeMarkAppPhase(const char *phaseName);
/**
设置启动过程中的某个时刻,例如 main,didfinishlaunch,dbinit
内部会减去app启动的最早时刻此方法多了开关控制
*/
extern void MPStartupTimeWithConfigMarkAppPhase(const char *phaseName);
/**
设置启动过程中的某段时间的耗时例如dbcost
*/
extern void MPStartupTimeSetRangeCost(const char *rangeName,CFTimeInterval cost);
/**
辅助统计某段时间的耗时
例如:
MPStartupRangeCostStart(dbinit);
//... db init code ...
MPStartupRangeCostFinish(dbinit);
*/
#define MPStartupTimeRangeCostStart(name)\
CFTimeInterval _mpstartuptimeRangeStart##name = CACurrentMediaTime();
#define MPStartupTimeRangeCostFinish(name)\
CFTimeInterval _mpstartuptimeRangeFinish##name = CACurrentMediaTime();\
MPStartupTimeSetRangeCost(#name,_mpstartuptimeRangeFinish##name - _mpstartuptimeRangeStart##name);
/**
Phase 启动的某一时刻距离app启动的时间
Range 启动的某一段代码的耗时
*/
typedef NS_ENUM(NSUInteger,MPStartupTimeDataType){
MPStartupTimeData_Phase,
MPStartupTimeData_Range,
};
/**
遍历所有过程
只能调用一次(后续调用没有数据)
*/
extern void MPStartupTimeForEachData(void (^callback)(const char *name,CFTimeInterval value,MPStartupTimeDataType type));
#ifdef __cplusplus
}
#endif // __cplusplus
#endif /* MPaaS_MonitorStartUpTime_h */