Linux(Ubuntu 12.04)获得了糟糕的多线程性能



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

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

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

最新更新