R语言运行通常只会占用cpu一个核,并未充分利用电脑cpu的性能。
以parallel包运行过程为例,通常多核运算的过程如下:
-
启动多核进程,对每个核心进行初始化
-
将数据分发给每个核心
-
将任务平均分配给每个核心,并把代码传递给每个核心
-
等待所有核心完成任务,并从每个核心提取结果
-
停止多核进程
这个时候或许有人问,如果分配的任务数多于核心数,怎么整?此时程序等待首批分配任务的核心完成工作以后再分配给它们,是不是像流水线上的工人一样(老资本家了)。
今天以uci数据库中的家庭电力消费数据集为例,比较几种不同方式运算速度的差异。
数据集下载的网址为:http://archive.ics.uci.edu/ml/machine-learning-databases/00235/
该数据集共有2075259个观测,9个变量:
-
date: 日期
-
time: 时间
-
global_active_power: 家庭平均每分钟有功功率
-
global_reactive_power: 家庭平均每分钟无功功率
-
voltage: 平均每分钟电压
-
global_intensity: 平均每分钟电流强度
-
sub_metering_1: 厨房用电