为什么M芯片的Mac不应该去装intel版的R

在几年前的一期视频中,我在我的M1芯片的Mac上装了intel的R,当时的解释是目bioconductor对M芯片支持的不好。最近,我又出了一期视频,介绍的R语言环境的配置用的是Apple silicon版本的R,因为bioconductor已经支持上了M芯片的Mac。如果现如今,还有人让你在M芯片上装intel的R,这就不太合适了,为什么呢?

必须要说的一点是,intel的R在M芯片上运行,会降低效率。这是因为macOS系统会将x86架构的指令翻译成arm结构的指令,在一些小的任务上,可能没有感觉,但如果一个任务需要长时间运行,那或许可能就是从等一天,变成等两天了。

当然,更为关键的是R包的编译环境相关的不兼容。对于预编译好的软件,无论是intel的R,还是Apple silicon的R,这两者在安装上都区别不大。但是一旦涉及到一些GitHub上包的编译,那么你就得在Mac上配置XCode和gfortran,以及可能的Java环境。我们以XCode为例,它会提供gcc/clang这些编译器,那么问题来了,这些工具编译的R包是对应什么平台呢?如果默认参数编译的R包是用在Apple silicon的R中,你的intel的R还能调用这个R包吗?接着,一些R包需要调用系统的Java。如果你默认装了Apple silicon的Java,那么你的intel R调用Java的时候就可能会因为不兼容而出错。这个时候,你或许还要纳闷,为啥Java都有了,咋还是用不了rJava呢。

时代变了,2020年初次亮相搭载的M芯片的Mac电脑也过去了快4年了,考虑到目前苹果发布的Mac产品都是M芯片的,那么未来R包更可能是去支持M芯片,而不是去支持intel的,咋就不要逆时代潮流了。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×