R高性能编程
  • 推荐0
  • 收藏0
  • 浏览473

R高性能编程

(不详)Aloysius Lim(阿洛伊修斯·利姆), (不详)William Tjhi(威廉姆· Tjhi) (作者)  唐李洋 (译者)

  • 书  号:978-7-121-27396-4
  • 出版日期:2015-11-03
  • 页  数:160
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: R High Performance Programming
  • 原书号:9781783989263
  • 维护人:张春雨
本书对R语言做了简要描述,配以大量编程实践和代码样例,适合于想要提高R语言性能的程序员和开发者,对大量数据的处理、R语言的实际应用、基准测试均有指导意义。现代社会面对越来越庞大的数据和数据分析,R语言正是分析和处理大数据的有效方式,本书正是全面解析R语言的优秀书目。
√ 学习如何对R程序进行性能分析和基准测试
√ 识别瓶颈,评估和识别CPU的性能限制,识别内存或磁盘I/O的局限性
√ 使用诸如计算向量化这样的技巧来优化R程序的计算速度
√ 更高级的技术,比如编译代码、利用GPU的计算能力、优化内存消耗
√ 通过基于磁盘的内存和块技术处理超过内存容量的数据集
前言
随着数据越来越重要,商家和科学家们也越来越需要高效分析和处理大规模数据的工具。近年来,R这一工具越来越普遍地应用于数据处理、统计分析和数据科学。虽然R最初源自学术界,但如今已经被工业界各个组织广泛使用。
然而,由于R本身的设计问题,它能够有效处理的数据规模和计算复杂度有限。这对于需要处理日益增长的大规模数据的R用户来说,是个极大的障碍。
《R高性能编程》这本书有助于理解R的性能难题,比如内存和计算方面的限制。本书还给出了很多克服这些难题的技术。你可以根据需求和计算环境选择其中一种技术或者混合使用不同的技术。
这本书是关于如何提升R程序性能的实用指南,并适当地解释了使你能够理解每一个解决方案背后的原因。同样,对于本书提到的每一个技术我们都提供了代码示例,以及在我们的机器上生成的性能分析结果以展示性能的提升情况。我们建议大家根据自己的实际环境敲写和运行这些代码,然后自己看看性能提升情况。
如果想要知道R的设计原理并理解其性能限制的原因,R内部文档(http://cran. r-project.org/doc/manuals/r-release/R-ints.html)中提供了有用的线索。
本书是基于开源R编写的,因为开源版本的R是最为广泛使用的,而且任何人都可以免费获得。如果你用的是商业版的R,请跟软件提供商确认一下他们都做了哪些性能优化。
R社区有很多提升R性能的新包,可从CRAN(http://cran.r-project.org/)获取。鉴于CRAN有成千上万个包,我们不可能逐一分析,来确定哪个包针对哪个操作提供了性能改善。相反,本书重点关注R程序员最常见的任务,介绍那些任何R项目都可以使用的技术。
本书的内容
第1章 理解R的性能:为什么R程序有时候很慢?从窥探R的底层原理开始,探索R程序达到性能极限的几种方式。我们讲述某些时候R的设计是如何给R程序造成计算(CPU)、内存(RAM)和磁盘输入/输出(I/O)上的性能瓶颈的。
第2章 性能分析:衡量代码的性能 介绍衡量R代码性能的几个技术,从而理解性能问题的本质。这些技术贯穿全书使用。
第3章 加快R运行的简单方法 介绍如何提升R代码的计算速度。这些基本技术在任何R程序中均可使用。
第4章 使用编译代码加快运行速度 讨论利用以另一种语言编写的编译代码,比如使用C编译的代码,来最大程度优化计算的性能。我们会看到编译代码是怎样加快R运行的,以及如何将编译代码集成到R程序中。
第5章 使用GPU让R运行得更快 这一章把我们带入现代加速器领域,利用GPU高速运行复杂计算。
第6章 减少内存使用的简单方法 介绍管理和优化RAM使用情况的基本技术,使R程序能够处理更大的数据集。
第7章 使用有限的内存处理大型数据集 解释怎样使用节约内存的数据结构和磁盘常驻的数据格式,处理超过可用内存大小的数据集。
第8章 使用并行计算加倍提升性能 介绍R中的并行性。我们会探索如何在单个机器和多个机器上并行地执行R代码。此外,还会讨论设计并行代码需要考虑哪些因素。
第9章 将数据处理交给数据库系统 描述如何将某些计算转交给外部数据库系统。这有助于将进出数据库的大数据(Big Data)迁移开销最小化,特别是当你已经拥有一个强大的数据库系统,你就可以利用它的计算能力和速度。
第10章 R和大数据 介绍利用大数据技术达到R的性能极限,并总结全书。
如果你赶时间,我们推荐优先阅读以下几个章节,然后再根据具体情况补充阅读其他相关章节:
? 第1章 理解R的性能:为什么R程序有时候很慢?
? 第2章 性能分析:衡量代码的性能
? 第3章 加快R运行的简单方法
? 第6章 减少内存使用的简单方法
阅读本书需要什么
本书中的所有代码都是在Mac OS X 10.9上编写的,使用64位的R 3.1.1版本。我们还尽可能地在Ubuntu 14.04 LTS和Windows 8.1上进行了测试。所有代码示例都可以到(https://github.com/com/r-high-performance-programming/rhpp-2015)下载。
要使用代码示例,建议安装R 3.1.1 64位版本,或者更高版本。
我们还建议在UNIX环境(包括Linux和Mac OS X)中运行R。因为如果在Windows上运行R,有些示例中的包,比如bigmemory只能在Unix环境下运行。示例代码中凡是UNIX和Windows环境下存在差异的,我们都会予以说明。
需要使用64位的R,因为有些操作(比如创建一个包含231个或更多元素的向量)在32位版本上是不可实现的。而且,64位版本能够尽可能多地利用系统的可用内存,而32位版本只能使用至多4GB的内存(有些操作系统最多只有2GB)。
此外,还需要安装一些R包。有些章节中的例子需要使用额外的包。
有些章节中的示例需要其他软件和包才能运行。这些在相应章节中都有说明,还给出了它们的安装指南。
如果无法获得示例中需要的那些软件和工具,可以在Amazon Web Services (AWS)上运行这些示例。例如,第5章的例子需要支持CUDA的NVIDIA GPU,第9章的例子需要几种数据库系统,第10章的例子需要Hadoop。
使用Amazon账号登录(http://aws.amazon.con/)就可以使用AWS。如果还没有账号,就创建一个账号。创建账号是免费的,但是使用服务器、存储和其他资源是收费的。请咨询AWS网站了解你所在地区的最新收费情况。
全球不同区域都提供AWS服务。截至本书编写之时,AWS有8个服务区域,其中3个在美国,1个在欧洲,3个在亚太地区,还有1个在南美。任选一个区域,比如选择离你最近的或者价格最低的。进入AWS控制台(http://console.aws.amazon.com),在右上角选择区域。选好区域以后,使用本区域内的AWS资源实现书中的示例代码。
在配置任何计算资源之前,比如配置服务器或者Hadoop集群,首先需要登入服务器的密钥对。如果还没有AWS Elastic Cmpute Cloud (EC2)的密钥对,按照以下步骤生成密钥对:
1.进入AWS控制台,单击EC2。
2.单击左侧菜单的密钥对。
3.单击创建密钥对。
4.输入新密钥对的名字(例如mykey)。
5.一旦单击创建以后,私有密钥(例如mykey.pem)就会下载到本地电脑。
在Linux和Mac OS X上,修改私有密钥文件的权限,只允许读操作。具体操作是在终端窗口中对mykey.pem文件执行chmod 400。
本书的读者对象
如果你已经是一个R程序员,想要寻找提升代码性能的方法,那么这本书适合你。你需要熟悉并舒适地使用R,但却不需要很高深的技术。阅读本书需要的技能包括:
? 安装、升级和运行R
? 在R环境中安装和升级CRAN包
? 创建和操纵基本的数据结构,例如向量、矩阵、列表和数据框
? 使用和转换不同的R数据类型
? 执行算术、逻辑和其他基本的R操作
? 使用R控制语句,例如if、for、while和repeat
? 编写R函数
? 使用R Graphics画图
如果你是R新手,想学习如何编写R程序,有很多书籍、在线课程、教程和其他资源可供参考。用你喜欢的搜索引擎搜一下就可以了。
约定
本书中使用了很多格式的文本,以区分各种不同的信息。这里我们举例说明这些格式,并解释它们的含义。
正文中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、URL、用户输入以及Twitter用户名的格式是这样的,例如:“要编译这个函数,我们在编译包中使用cmpfun()函数。”
代码块像这样表示:
fibonacci_rec \<- function(n) {
if (n \<= 1) {
return(n)
}
return(fibonacci_rec(n - 1) + fibonacci_rec(n - 2))
}
新术语和重要词汇用黑体表示。屏幕上出现的词,例如,菜单或对话框,像这样表示:“在安装向导中一定要勾选‘制作安装包’和‘编辑系统路径’两个选项。”

警告或重要事项以这种方式表示。

技巧和提示像这样表示。
下载示例代码
你可以从http://www.broadview.com.cnbo“下载专区”,下载所有已购买的博文视点书籍的示例代码文件。
勘误表
虽然我们已经尽力谨慎地确保内容的准确性,但错误仍然存在。如果你发现了书中的错误,包括正文和代码中的错误,请告诉我们,我们会非常感激。这样,你不仅帮助了其他读者,也帮助我们改进后续的出版。如发现任何勘误,可以在博文视点网站相应图书的页面提交勘误信息。一旦你找到的错误被证实,你提交的信息就会被接受,我们的网站也会发布这些勘误信息。你可以随时浏览图书页面,查看已发布的勘误信息。

目录

前言 X
1 理解R的性能:为什么R程序有时候很慢? 1
计算性能的三个限制因素:CPU、RAM和磁盘I/O 2
R是运行时解释的 4
R是单线程的 5
R需要将全部数据加载到内存 5
算法设计影响时间和空间复杂度 6
小结 9
2 性能分析:衡量代码的性能 11
衡量总运行时间 11
使用system.time()衡量运行时间 12
使用rbenchmark重复衡量运行时间 13
使用microbenchmark衡量运行时间的分布 15
分析运行时间 16
使用Rprof()分析函数的性能 16
性能分析的结果 18
分析内存使用情况 20
使用OS工具监控内存使用情况、CPU使用情况和磁盘I/O 22
瓶颈的发现及解决 23
小结 26
3 加快R运行的简单方法 27
向量化 27
使用内置函数 29
预分配内存 30
使用更简单的数据结构 33
使用哈希表进行大型数据上的频繁查找 34
去CRAN寻找更快的包 35
小结 36
4 使用编译代码加快运行速度 37
在运行之前编译R代码 37
编译函数 38
即时编译(JIT)R代码 41
在R中使用编译语言 41
前提条件 42
以内联形式包含编译代码 42
调用外部编译代码 46
使用编译代码的注意事项 49
小结 52
5 使用GPU让R运行得更快 53
GPU上的通用计算 53
R和GPU 54
安装gputools 55
使用gputools实现快速统计建模 55
小结 59
6 减少内存使用的简单方法 61
重用对象而不多占用内存 61
删除不再需要的中间数据 66
运行时计算值而不是永久性存储值 69
交换活跃数据和非活跃数据 71
小结 71
7 使用有限的内存处理大型数据集 73
使用节约内存的数据结构 73
更小的数据类型 76
稀疏矩阵 77
对称矩阵 78
比特向量 79
使用内存映射文件并以块的形式处理数据 80
bigmemory包 81
ff包 85
小结 89
8 使用并行计算加倍提升性能 91
数据并行性 v.s. 任务并行性 91
实现数据并行的算法 95
实现任务并行的算法 98
集群节点运行同一个任务时 98
集群节点运行多个不同任务时 100
计算机集群并行执行多个任务 102
共享内存并行性 v.s. 分布式内存并行性 104
优化并行的性能 108
小结 109
9 将数据处理交给数据库系统 111
将数据抽取到R v.s. 在数据库中处理数据 111
在关系型数据库中使用SQL进行数据预处理 112
将R表达式转化为SQL 116
使用dplyr 117
使用PivotalR 119
在数据库中运行统计和机器学习算法 122
使用列式数据库提升性能 125
使用数据库阵列最大化科学计算的性能 128
小结 129
10 R和大数据 131
理解Hadoop 131
在Amazon Web Services上配置Hadoop 133
使用Hadoop批量处理大型数据集 136
将数据上传到HDFS 136
使用RHadoop分析HDFS数据 138
R中的其他Hadoop包 142
小结 143

本书勘误

印次

读者评论

  • 这本书有责编吗? 前言就开始出低级错误,牌子砸的响亮的~

    leole发表于 2018/8/10 21:15:31
  • 按照书中提供的链接怎么找不到代码下载专区???

    zhangok发表于 2017/11/10 12:10:50
    • 就在这本书页面右侧有下载链接,点击即可下载,谢谢。

      张春雨发表于 2017/11/13 14:14:11

相关图书

Python编程与3D物理学仿真(视频版)

张继春 (作者)

本书将Python编程和物理力学知识同步结合起来,通过编程将物理概念和物理过程进行3D可视化展 现,帮助读者在3D场景下加深对物理知识的理解和掌握,从而培养读者...

¥89.90

Photoshop设计师精通之道:摄影+平面+UI+网店实战全解

委婉的鱼 (作者)

近些年,Photoshop软件在平面设计、广告摄影、影像创意、网页制作、后期修饰、视觉创意及界面 设计中的重要地位越来越不可被撼动,学好Photoshop是一个...

¥62.30

利用Python轻松学数学

蹇 彤 (作者)

本书将Python编程的基本知识和中小学数学知识紧密结合起来,在介绍Python知识的同时穿插数学趣题和难题的讲解,以引导读者从一个全新的角度来看待编程、体验编...

¥69.00

Python接口自动化测试

王浩然 (作者)

本书主要介绍如何用Python实现接口自动化测试。全书主要内容包括接口基础、接口手工测试、编程前的准备、用Python处理MySQL数据库、用Python发送H...

¥59.00

Python编程之美:最佳实践指南

Reitz,Schlusser (作者) 夏永锋 (译者)

本书是Python用户的一本百科式学习指南,由Python社区数百名成员协作奉献。<br>全书内容分为三大部分。第一部分是关于如何配置使用Python编辑工具的...

¥89.00

Lua程序设计(第4版)

Roberto Ierusalimschy (作者) 梅隆魁 (译者)

本书由 Lua 语言作者亲自撰写,针对 Lua 语言本身由浅入深地从各个方面进行了完整和细致的讲解。作为第 4 版,本书主要针对的是 Lua 5.3,这是本书撰...

¥89.00