-1

我有一个应用程序可以摄取 32 个实时音频流,对它们进行编码/压缩,然后通过网络将它们发送出去,在 OSX (10.8.x) 上运行。分析显示大部分 CPU 时间花在压缩器/编码器功能上,活动监视器显示大约 40% 的 CPU 利用率。该应用程序在单线程中运行良好,它只是占用了一个处理器内核。

只是为了好玩,我实现了一堆并发调度队列来利用多核处理,现在并行完成大部分编码。Activity Monitor 显示我现在相当均匀地分布在 CPU 上,但当然我仍然使用相同百分比的整体 CPU 容量(事实上,由于 GCD 开销,稍微多一点)。

唯一真正的优势是多线程情况下的音频数据包比单线程情况下的传输速度快了大约 4 毫秒,但这对整体系统性能来说并不是什么大问题。

所以问题是这样的:考虑到应用程序运行“OK”单线程这一事实,不占用一个处理器还有其他好处吗?假设我们有一个 4 核处理器,使用 40% 的单核或 10% 的四核是更好还是更差?数学会说这是一样的。

或者,我只是无缘无故地自责吗?

谢谢,

查克

4

1 回答 1

2

只要您使用不到 100% 的一个内核,多线程就没有太多优势。

OTOH,很可能并非所有用户都拥有与您的 Mac 一样快的 Mac。如果您的程序曾经在速度较慢(但仍然是多核)的 Mac 上运行,其中单线程会将内核固定为 100%,那么多线程将在该 Mac 上加快速度。

于 2013-10-17T16:26:16.753 回答