大家好,我是Richie,今天简单讲一点代码优化方法,用代码的形式设置多核并行,来大大加速数据处理速度。这种方法就像流水线作业,每一个节点都在同时运作,并将结果传送给下一个节点。
我写了个小Demo来更直观的演示。
我们的Demo功能如下,首先我们采用“串行”方法,此时数据处理总耗时是所有算法耗时之和。
随后,我们转而采用“并行”方法,可以看到总耗时缩减到原先的1/4,运行速度提升了4倍。这是比较理想的情况,4个算法耗时均相等。此时并行速度就取决于你的算法个数和CPU核数了。
当然,实际情况下各算法耗时很难做到完全相等。因此并行的速度将取决于耗时最长的那个算法。如下图所示,我仅将算法3的耗时加大到80ms,可见总耗时也变为80ms。
可见,使用并行技术能够大大加速我们的代码运行,但前提是这部分代码在逻辑上可以采用“流水线”。而且运行速度一般受限于耗时最长的部分,要想取得最快的速度,这就要求我们能够合理分配各Vi的耗时。
源代码比较简单我就不上传耗费大家积分了,上一点图片吧。
源代码片段:串行
源代码片段:多核并行
PS:细心的同学可能会发现,在程序刚开始运行时,并行运行的代码会传递出错误值,这很好理解,就像流水线首次开始运行一样,此时靠后的节点没有输入,那么输出当然会出错。如果不能容忍这种错误,那么就要考虑其他方法去除啦。^_^