对处理能力和运行时间感到困惑

时间:2013-06-24 19:19:33

标签: performance

我一直在C,Python和Matlab上进行科学计算。当我在台式PC上运行一段代码时,可能需要数小时才能完成。但是,在此期间,使用的CPU不到100%,内存不足100%。

那么瓶颈在哪里?天真的问题:为什么PC不能在算法上投入更多处理能力以使其运行得更快?

修改

特别是,我目前正在Matlab中运行一个矢量化循环(不执行任何I / O),该循环已持续2小时,任务管理器表示40-38%的CPU使用率(和28%的内存)全部这些时间。为什么PC不使用90%的CPU而且更快?

3 个答案:

答案 0 :(得分:2)

你在做任何I / O吗?你在运行任何其他进程吗? 在任何时刻,计算机都在运行你的程序(100%)或其他东西(0%),所以你看到的是时间平均。 如果你做了任何I / O,那么你的程序必须等到它发生的时候才能完成,而这个程序是100%的。

就内存而言,您的程序使用它所使用的内容,这可能是也可能不是所有可用的RAM。

BTW,仅仅因为它使用100%的CPU并不意味着它的速度很快。你的Python和Matlab代码可能需要10-100个周期来完成C在一个周期中所做的事情,因为这些语言被解释和/或做了更多的内存管理。

答案 1 :(得分:1)

尝试更改流程的优先级(如果使用了多个流程,则尝试更改流程)。根据操作系统的不同,实际上可以使整个CPU专用于您的过程。请务必了解其含义。我已经做了这个测试。

答案 2 :(得分:1)

现在大多数CPU都具有多个内核,如果在多个线程上执行,程序可能运行得更快。但是,您列出的语言不太容易支持多线程(在C语言中,您可以尝试使用pthreadsMPI)。

如果您需要尝试不同的输入数据或算法版本,快速解决方案可能只是同时运行两个或三个程序实例。你似乎也有足够的记忆力。