cpu压力 测试软件,破坏测试工具——CPU压力

由于代码是在iOS上进行测试的,所以仅供参考

//首先是cpu运算的函数

void func() {

sqrt(rand());//进行开方运算

}

//建立获取基准时间

static inline uint64_t nanos_to_abs(uint64_t nanos) {

return nanos * timebase_info.denom / timebase_info.numer;

}

//在本函数中,大家可以根据需要去将CPU压力分配到多个线程中

void cpu_stress_threads(double percentage, int thread_count) {

for (int i = 0; i < thread_count; i++) {

cpu_stress(percentage/thread_count);

}

}

//CPU加压函数

void cpu_stress(double percentage) {//我们首先传入希望达到的CPU占比

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

mach_timebase_info(&timebase_info);//基准时间校准

});

dispatch_queue_t queue2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(queue2, ^{//开辟线程执行加压动作

uint64_t bias = 0;

while (true) {//死循环持续加压,这里大家可以自行添加停止的时机

uint64_t t1, t2, t3, t, delay;

t1 = mach_absolute_time();

uint64_t sliceEnd = t1 + nanos_to_abs(1e7);//一个时间片为10ms

do {

//占用cpu的函数

func();

t2 = mach_absolute_time();

}

while(t2 < sliceEnd);//执行10ms的CPU持续运行

t = t2 - t1;

delay = t * ( 1.0 / percentage - 1.0);

delay -= bias;

mach_wait_until(mach_absolute_time() + delay);//执行对应比例的CPU休息时间

t3 = mach_absolute_time();

bias = (t3 - t2) - delay;//将代码执行的时间损耗计入休息时间

}

});

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值