我写了一个Java程序。对于小输入,在预热(前50次运行)后,其运行时间变为大约2毫秒。
在这种情况下,如果我使用多线程版本,我们可以获得任何好处吗?如果没有,隐藏并行执行的好处的开销是什么?
答案 0 :(得分:3)
启动线程的开销很可能远远超过任何加速。在Windows上,您甚至无法可靠地测量这些快速程序的执行时间。
但是,当然,你必须问问自己,对于一个在2毫秒内运行的程序,你是否真的需要加速。
答案 1 :(得分:0)
Id取决于2ms是否太慢。这还取决于您是否要同时运行任务。 为什么不使用Executor来运行您的任务,然后您可以根据需要添加线程。
答案 2 :(得分:0)
嗯,2ms至少是分裂多个线程的候选者。不断创建/运行/终止/加入线程是一种非首发 - 无望的设计。如果信令工作到一组专用线程或向池中发布工作,那么这一切都取决于完成的工作和数据组织。
如果有任何阻塞或CPU密集型工作可以在这2ms内并行执行,那么你可以试一试。 CPU密集型工作的关键问题是数据量和组织方式。如果要处理的数据可以很容易地被切割成漂亮的[L1-cache-size或更小]块,那么你就是胜利者。如果没有,请为失望做好准备。
当然,你可以尝试看看..