Android 之 systrace

部署运行你感兴趣的模型镜像

Android systrace 系统的 C++ 宏定义

宏定义详解
1. 基础检查宏
#define ATRACE_ENABLED() atrace_is_tag_enabled(ATRACE_TAG)

• 作用:检查指定的 trace tag 是否启用

• 用途:在需要复杂计算的 trace 前先检查,避免不必要的性能开销

2. 作用域跟踪宏(推荐使用)
#define ATRACE_NAME(name) ::android::ScopedTrace PASTE(___tracer, __LINE__)(ATRACE_TAG, name)
#define ATRACE_CALL() ATRACE_NAME(__FUNCTION__)

• ATRACE_NAME(name):创建一个作用域跟踪区间

• ATRACE_CALL():自动使用当前函数名作为跟踪名称

• 特点:利用 RAII 机制,构造时开始跟踪,析构时自动结束

3. 手动开始/结束宏

#define ATRACE_BEGIN(name) atrace_begin(ATRACE_TAG, name)
#define ATRACE_END() atrace_end(ATRACE_TAG)

• 需要手动配对使用

• 适用于非块状结构的跟踪

4. 数值跟踪宏

#define ATRACE_INT(name, value) atrace_int(ATRACE_TAG, name, value)

• 用于跟踪整数值的变化(如计数器、状态值等)

5. 异步操作跟踪宏

#define ATRACE_ASYNC_BEGIN(name, cookie) atrace_async_begin(ATRACE_TAG, name, cookie)
#define ATRACE_ASYNC_END(name, cookie) atrace_async_end(ATRACE_TAG, name, cookie)

• 用于跟踪跨线程的异步操作

• 通过 cookie 标识关联的开始和结束事件

6.使用示例
void processData() {
    ATRACE_CALL();  // 自动跟踪整个函数执行时间
    
    // 手动跟踪特定代码段
    ATRACE_BEGIN("data_processing");
    // ... 处理逻辑
    ATRACE_END();
    
    // 跟踪数值
    static int counter = 0;
    ATRACE_INT("processing_counter", ++counter);
    
    // 异步操作跟踪
    ATRACE_ASYNC_BEGIN("network_request", request_id);
    // 发起异步请求...
}
// 在另一个线程中结束异步跟踪
void onRequestComplete(int request_id) {
    ATRACE_ASYNC_END("network_request", request_id);
}

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值