1

我有一个正在开发的多线程文件转换器。在 Windows 上,它将每个正在转换的文件放在自己的线程中,并始终使用 100% 的 CPU(在所有内核上)。这很棒!在 Ubuntu 上,我在第一个内核上得到 100%,在其余所有内核上得到约 10%。表现很差,令人失望。

我在 SwingWorker 中使用线程,所以我不会冻结 GUI。我在所有线程上使用 thread.join,所以当所有线程都完成时我执行某个任务。我没有更改操作系统之间的代码。有没有可行的方法来解决这个问题?

4

1 回答 1

1

这是非常愚蠢的,我不太明白为什么,但在我发布后不久,我将所有文件转移到我的 Ubuntu 分区,它和 Windows 一样快(如果不是更快的话)。不知道为什么移动文件会使它运行得更快?也许我真正的问题是,由于它们位于不同的文件系统上,我的瓶颈是 I/O。仅从 NTFS 分区转换一个文件所用的时间是我将其移动到 ext4 分区时的 3 倍。(是的,这些都在同一个 SSD 上)

于 2012-07-22T00:58:45.693 回答