我一直在C,Python和Matlab上进行科学计算。当我在台式PC上运行一段代码时,可能需要数小时才能完成。但是,在此期间,使用的CPU不到100%,内存不足100%。
那么瓶颈在哪里?天真的问题:为什么PC不能在算法上投入更多处理能力以使其运行得更快?
修改
特别是,我目前正在Matlab中运行一个矢量化循环(不执行任何I / O),该循环已持续2小时,任务管理器表示40-38%的CPU使用率(和28%的内存)全部这些时间。为什么PC不使用90%的CPU而且更快?
答案 0 :(得分:2)
你在做任何I / O吗?你在运行任何其他进程吗? 在任何时刻,计算机都在运行你的程序(100%)或其他东西(0%),所以你看到的是时间平均。 如果你做了任何I / O,那么你的程序必须等到它发生的时候才能完成,而这个程序是100%的。
就内存而言,您的程序使用它所使用的内容,这可能是也可能不是所有可用的RAM。
BTW,仅仅因为它使用100%的CPU并不意味着它的速度很快。你的Python和Matlab代码可能需要10-100个周期来完成C在一个周期中所做的事情,因为这些语言被解释和/或做了更多的内存管理。答案 1 :(得分:1)
尝试更改流程的优先级(如果使用了多个流程,则尝试更改流程)。根据操作系统的不同,实际上可以使整个CPU专用于您的过程。请务必了解其含义。我已经做了这个测试。
答案 2 :(得分:1)