我正在使用 java 构建期权估值(二项式树)。我的二项式树具有 1000 个步骤的正常顺序代码,需要 0.1 秒。但是当我尝试使用并行运行它时,大约需要 65 秒。任何建议和意见将不胜感激..
Binomial Thread is my class which does the calultion
ThreadPoolExecutor threadExecutor = new ThreadPoolExecutor(10000, 10000, 500,
TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),
new ThreadPoolExecutor.CallerRunsPolicy());
for (int i = 0; i < 10000; i++) {
Runnable thread = new BinomialThread();
threadExecutor.execute(thread);
}
最佳答案
如果线程数大于处理器数并且没有等待时间(例如等待网络数据、读取文件等),则性能会降低而不是增加切换所需的时间一个进程到另一个进程。 您有 10.000 个线程,这就是为什么您的程序在多线程环境中比单线程环境花费更多时间。
关于Java并行编程性能建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28940612/