0

我一直在运行著名的旅行推销员问题的单线程暴力破解版本,YourKit 指出 CPU 最多使用 25% 的事实。

这个事实背后的原因是什么?我们被告知这类算法是高度 CPU 密集型的,但在这种情况下似乎有很多 CPU 浪费。

我的理论是瓶颈一定是RAM访问。锁定问题似乎没有问题,因为我正在运行的算法是单线程的。

我对吗?

4

2 回答 2

6

促进评论回答。

你说你的程序是单线程的,但你只使用了 25% 的 CPU。

这表明你有一台四核机器。(或者可能是超线程的双核)使用单线程,您不能使用超过 1 个内核。

所以你看到的是正常的。


另外,锁定和内存访问等瓶颈不会直接降低您的 CPU 使用率。一个单线程程序在整个时间内都没有缓存,仍然会显示与运行真实计算的程序相同的 25% 使用率(在四核上)。

在多线程应用程序中,如果此类瓶颈阻止其他线程运行或影响负载平衡,则可能会影响 CPU 使用率。

于 2012-02-23T07:45:27.460 回答
4

... CPU 最多使用 25%。

你有 4 个内核(有或没有超线程)吗?

会发生什么:您的一个进程在四个核心之间跳转。对于一个核心,这提供了 25% 的平均利用率。

我的理论是瓶颈一定是RAM访问。锁定问题似乎没有问题,因为我正在运行的算法是单线程的。

RAM 访问时间不是单独计算的,它是 CPU 时间的一部分。

于 2012-02-23T07:45:16.660 回答