1

我正在评估是否为我的程序使用带有四核处理器的 Java 线程池或 Aparapi GPU 框架。

虽然 GPU 的增益会很好,但四核处理器和 GPU 之间的速度差异并不是算法的淘汰标准。另一方面,我的程序结构非常好,包含很多复杂的对象——如果我理解正确的话——Aparapi 不支持原始数据类型之外的并行化。

对于那些对复杂对象的两种方法都有经验的人,您会建议将对象重构为 Aparapi 的原始数据类型还是坚持使用 Java 线程池?我是否正确理解对于 Java 线程池,它可以处理的对象类型没有限制?

4

1 回答 1

1

ExecutorServiceLikeThreadPoolExecutor只是一个工作线程池,它们执行从队列中提取的作业 ( ) Runnables,因此除了常见的并发问题(如数据竞争和死锁)之外,对您的对象没有任何限制。

如果速度对您非常重要,那么将您的对象转换为原始数据类型的数组并处理这些数组应该是您在引入并发后的第一个优化。如果在那之后你想移动到 gpu,那么你已经处于原始数据结构的水平。

于 2014-12-12T13:00:30.267 回答