我完全从内存(没有IO)运行算法,但我的CPU使用率低于25%.可能存在的瓶颈是什么?

dev*_*ium 0 java performance profiling yourkit

我一直在运行着名的旅行商问题的单线程暴力版本,而YourKit正在向我指出CPU最多使用25%的事实.

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

我的理论是瓶颈必须是RAM访问.锁定问题似乎是不可能的,因为我运行的算法是单线程的.

我对吗?

Mys*_*ial 6

促进评论回答.

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

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

所以你所看到的是正常的.


作为一个侧面点,锁定和内存访问等瓶颈不会直接降低CPU使用率.一个花费整个时间缓存丢失的单线程程序仍将显示与运行实际计算的25%相同的使用率(在四核上).

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