我正在开发一个涉及一些计算密集型算法的程序。在我的i7上,执行一次完整计算大约需要±45秒。
它还没有多线程,因此它只使用一个核心,因此有一个明显的改进机会。
然而,当我监控我的处理器使用情况时,我注意到它甚至没有完全使用一个核心。在没有其他密集进程运行的情况下,我看到我的8个核心中的一个上有活动,但它只做了60-80%,而我希望运行我的程序的核心完全耗尽100%。
该算法不涉及磁盘或网络访问,并且不涉及大量内存(它执行一些非常繁重的图像处理,我目前仅使用非常小的图像)并且它不使用GPU。这是一个简单,直接的过程,只进行一次繁重的计算,而且我没有睡觉或打断或等待事件或任何事情。
为什么计算密集型程序(不依赖外部资源)不使用正在运行的核心来满足它的全部容量?