使用Linux系统工具Perf收集性能事件(分支预测、缓存)和绘制火焰图

使用Linux系统工具Perf收集性能事件(分支预测、缓存)和绘制火焰图

原文作者黄崇艺,转载自其博客文章

Perf

Debian 安装 perf

sudo apt install linux-perf

收集分支预测事件

perf stat -e branch-instructions,branch-misses <your_program>
  • branch-instructions:分支指令的总数
  • branch-misses:分支预测失败的次数
hit_rate = 1 - branch-misses / branch-instructions    //命中率

以下是一个包含多个复杂分支跳转的 C 语言程序示例。这个程序包含了多层嵌套的条件判断、循环和函数调用,以演示复杂的分支逻辑

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 模拟复杂条件的函数
int complex_condition(int x) {
   
    if (x % 2 == 0) {
   
        if (x % 3 == 0) {
   
            return 1;  // 可被2和3整除
        } else {
   
            if (x % 5 == 0) {
   
                return 2;  // 可被2和5整除
            } else {
   
                return 3;  // 可被2整除,但不能被3或5整除
            }
        }
    } else {
   
        if (x % 7 == 0) {
   
            return 4;  // 可被7整除
        } else {
   
            return 5;  // 不能被2或7整除
        }
    }
}

// 递归函数,模拟复杂的分支跳转
int recursive_function(int depth) {
   
    if (depth <= 0) {
   
        return 0;
    } else {
   
        if (depth % 2 == 0) {
   
            return depth 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹无悔

请支持我的梦想!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值