C/C++性能优化背后的方法论和CPU流水线介绍

在开发过程中,我们或多或少会关注服务的性能。但是性能优化相对来说比较困难,往往需要多轮的优化和测试,费时费力,有时可能不会有很好的效果。但如果有更好的性能优化方法指导和工具辅助分析,就可以快速找到性能瓶颈,有针对性地进行优化,事半功倍。

性能优化的难点在于找出关键的性能瓶颈。如果没有一些工具的帮助,很难找到这些瓶颈。例如,在c++程序中,大多数人可能使用perf /bcc工具来找出哪里有性能瓶颈。性能瓶颈的原因很多,CPU、内存、磁盘、架构等等。本文只关注CPU调优,即如何引流CPU性能,最大化CPU吞吐量。(其实CPU的性能出厂时就已经决定了,我们需要做的是让CPU尽可能做有用的工作。)所以为了优化CPU利用率,我们其实是发现自己写的代码不够好,没有优化。

一、示例

#include <stdlib.h>

#define CACHE_LINE attribute((aligned(64)))

struct S1
{
int r1;
int r2;
int r3;
S1 ():r1 (1), r2 (2), r3 (3){}
} CACHE_LINE;
void add(const S1 smember[],int members,long &total) {
int idx = members;
do {
total += smember[idx].r1;
total += smember[idx].r2;
total += smember[idx].r3;
}while(–idx);
}
int main (i

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值