0

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

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

编辑

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

4

3 回答 3

2

你在做任何 I/O 吗?您是否正在运行任何其他进程?在任何时刻,计算机要么在运行你的程序 (100%),要么在运行其他程序 (0%),所以你看到的是时间平均值。如果您执行任何 I/O,您的程序必须在它发生时等待,而这是 100% 的。

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

顺便说一句,仅仅因为它使用 100% 的 CPU 并不意味着它很快。您的 Python 和 Matlab 代码可能需要 10-100 个周期才能在一个周期内完成 C 所做的相同事情,这仅仅是因为这些语言被解释和/或执行更多的内存管理。

于 2013-06-24T19:23:48.197 回答
1

尝试更改进程的优先级(如果使用多个进程,则更改进程)。根据操作系统,您实际上可以使整个 CPU 专用于您的进程。请确保您了解其中的含义。我这样做是为了测试。

于 2013-06-24T19:59:16.927 回答
1

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

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

于 2013-06-25T06:41:33.633 回答