关于CPU占用率和程序执行时间的问题
简单小小丫 2014-05-05 03:45:38 最近在优化一个算法以降低算法的执行时间,算法用opencv写的,调用了很多系统自带的函数,在C代码上能优化的空间比较小。算法预计应用在android手机上,现在的手机大部分都是双核甚至4核的。算法用单线程写时,CPU占用率只有20%多,耗时1000毫秒左右;改写成双个线程,CPU占用率提高到50%左右,耗时下降到650毫秒左右。以上都是在双核手机上测试。在优化C代码空间很小的情况下,产生这样的疑惑:我是不是想办法提高CPU的利用率,就能降低算法执行时间?现在即使改写成两个线程,但好像两个线程都在同一个核上跑,每次用top命令查看CPU占用率,该程序在0和1的CPU上来回跳跃。
归纳一下疑惑:1.CPU占用率和程序执行时间是否成反比?
2.能把两个线程绑定到不同的核上跑吗?若能,绑定到不同核上之后,两个线程之间对资源的竞争减小了,算法执行时间是否会降低?
望大牛们给答疑解惑,小女子感激不尽。