<p><strong><span style="">在多核CPU环境中,通过如下方式我们能够充分利用多核的优势为加速我们的应用:</span></strong><br><br><span style="">1.必须把一个大的计算任务分割成多个任务并让他们并行执行。<br><br>2.对于计算密集型程序,线程数最好限制在CPU内核数以内。<br><br>3.对于IO密集型程序,线程数可以采用如下公式来预估:</span></p>
<p><span style=""><span style="white-space: pre;"> </span>线程数 = CPU内核数 / ( 1 - IO阻塞率 ) , 阻塞率在 0 到 1 之间</span></p>
<p><span style=""><br></span></p>
<p><span style="">如:在一个4核系统中,执行一个网络应用从远程服务器上获取数据,有90%的时间是花费在IO操作上的,那么我们的线程数为 ?4 / (1-0.9) = 40?</span></p>
<p><span style=""><br></span></p>
<p><span style="">4. 并行任务之间尽量避免状态以来,而应采用共享不可变数据和隔离可变数据。</span></p>
<p><span style=""><br></span></p>
<p><span style="">5. 在JAVA平台上开发时,应该尽量不要用旧的并发API , 如 Threads , wait , notify 等,这些开发包已经被新的开发包代替了,新的API为我们提供了更好的灵活性以及更高的性能。</span></p>
<p>?</p>
<p>?</p>
<p><span style=""><span style="white-space: pre;"> </span>线程数 = CPU内核数 / ( 1 - IO阻塞率 ) , 阻塞率在 0 到 1 之间</span></p>
<p><span style=""><br></span></p>
<p><span style="">如:在一个4核系统中,执行一个网络应用从远程服务器上获取数据,有90%的时间是花费在IO操作上的,那么我们的线程数为 ?4 / (1-0.9) = 40?</span></p>
<p><span style=""><br></span></p>
<p><span style="">4. 并行任务之间尽量避免状态以来,而应采用共享不可变数据和隔离可变数据。</span></p>
<p><span style=""><br></span></p>
<p><span style="">5. 在JAVA平台上开发时,应该尽量不要用旧的并发API , 如 Threads , wait , notify 等,这些开发包已经被新的开发包代替了,新的API为我们提供了更好的灵活性以及更高的性能。</span></p>
<p>?</p>
<p>?</p>

本文深入探讨了在多核CPU环境中通过合理分割任务、优化线程数、避免状态依赖以及选用现代并发API等策略,有效提升计算密集型与IO密集型程序的性能。以实例说明如何计算IO密集型程序的最佳线程数,并强调了选择合适的技术栈对于提高开发效率的重要性。

被折叠的 条评论
为什么被折叠?



