原创文章,转载引用务必注明链接。水平有限,欢迎指正。
树莓派拥有一枚四核CPU(现在的CPU大多拥有多个核心),但是默认情况下,程序仅使用其中一个,其他处于围观状态。
那么如何让程序使用多核心负载,效果又如何呢?
这里我们通过GNU Parallel,让Linux命令使用所有的CPU内核,加速程序运行。
官方主页:https://www.gnu.org/software/parallel/
中文指南:http://my.oschina.net/enyo/blog/271612
主要适用于对文件进行操作,比如编译源码、压缩文件、多媒体转码等。
这里以压缩文件为例:
# 安装压缩工具bzip2以及gnu parallel sudo apt-get update sudo apt-get install -y bzip2 parallel
上传VidonXBMC_V14.2.1.apk作为测试文件(79 MB)
time cat VidonXBMC_V14.2.1.apk | bzip2 --best > single.bz2
效果如图,仅使用一个CPU核心:
time命令用于统计给定命令所花费的总时间。这里我们主要看real这一项,指完成该命令的时间,其他两项和CPU用时有关,详情请看下文链接。
time cat VidonXBMC_V14.2.1.apk | parallel --pipe --recend \'\' -k bzip2 --best > multi.bz2
此时使用全部4个CPU核心。
耗时为原来的一半,还是很明显的。
相信很多人下载C语言源码,编译程序的时候,会用到以下三部曲:
./configure make sudo make install
其中make是编译主要部分,也是最耗时的部分,而使用-j参数可以指定使用多核负载,同时工作,加快效率。例如:
make -j 2
意为使用两个内核同时编译,不加参数则使用所有内核同时工作。