《R语言数据分析》——3.3 测试

简介:

本节书摘来自华章出版社《R语言数据分析》一书中的第3章,第3.3节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 测试

正如在前述章节中讨论过的内容一样,借助microbenchmark包,我们可以在一台机器上重复执行若干遍函数,以获得一些可重现的性能测试结果。

现在,需要先定义作为测试基准的函数,以下一些函数都是从前面样例中挑选出来的:

QQ_20170525133809
QQ_20170525133814

前面已经介绍过dplyr包的summarise函数需要耗费一些时间用于数据预处理,因此下面我们将重新定义一个函数能够支持在聚集操作时生成新的数据结构:

QQ_20170525133822

类似地,在测试data.table时,也需要一些专门用于测试环境的附加变量,由于hlf?ights_dt已经根据DayofWeek的值进行了排序,我们可以为测试创建一个新的data.table对象:

QQ_20170525133827

更进一步地,说清楚该对象没有键值可能也有些必要:

QQ_20170525133906

现在,我们可以对data.table测试案例上定义函数,并且实现对象到data.table的转换,同时为了和dplyr一致,在转换后的data.table上添加键值:

QQ_20170525133912

到这一步,我们已经完成了测试的准备任务,下面可以导入microbenchmark包继续后面的工作了:

QQ_20170525133916
QQ_20170525133921

结果非常不错:从之前高于2000毫秒的执行时间,经过工具优化后,缩短为只需要大约1毫秒的时间:

QQ_20170525133925

因此,看起来dplyr包是最有效的解决方法,尽管它需要考虑一些额外(对data.frame进行分组)的操作,该方法依然具有毋庸置疑的优势。事实上,如果我们已经准备好了一个data.table对象,就能够节约从data.frame转换到data.table的时间,而data.table的效果要比dplyr更好。不过我估计读者可能并未注意到两个高效方案在时间上的差别。在处理更大规模的数据集时,这两种方法性能都不错。

值得注意的是,dplyr包只能处理data.table对象,因此,我们不用固定在任意一种方法上,在必要时同时使用两种方法都可以。以下是一个POC样例:

QQ_20170525133930
QQ_20170525133933

现在,我们已经对使用data.table或者是dplyr计算数据分组平均值的过程非常清楚了。但假如是更复杂的操作又该如何解决呢?

相关文章
|
6月前
|
测试技术 Go
零代码上手测试:Go语言内置测试框架介绍
零代码上手测试:Go语言内置测试框架介绍
47 0
|
7月前
|
人工智能 大数据 数据挖掘
只知道ABtest?测试方法还有这些,数据分析师都得掌握!
只知道ABtest?测试方法还有这些,数据分析师都得掌握!
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
R语言 一种功能强大的数据分析、统计建模 可视化 免费、开源且跨平台 的编程语言
R语言 一种功能强大的数据分析、统计建模 可视化 免费、开源且跨平台 的编程语言
130 1
|
2月前
|
监控 数据挖掘 中间件
性能测试数据分析的第一步
性能测试数据分析的第一步
32 0
|
2月前
|
算法 数据挖掘
R语言——AVOCADO“(异常植被变化检测)算法(1990-2015数据分析)监测森林干扰和再生(含GEE影像下载代码)
R语言——AVOCADO“(异常植被变化检测)算法(1990-2015数据分析)监测森林干扰和再生(含GEE影像下载代码)
41 1
|
1月前
|
机器学习/深度学习 数据可视化 算法
从零到精通:学习这些R语言必学包成为数据分析高手!
从零到精通:学习这些R语言必学包成为数据分析高手!
35 0
|
6月前
|
测试技术 Go
Golang 语言怎么编写测试代码?
Golang 语言怎么编写测试代码?
24 0
|
3月前
|
Cloud Native 测试技术 Go
云原生系列Go语言篇-编写测试Part 2
在花时间坠入优化的深渊之前,请明确程序需要进行优化。如果程序已经足够快,满足了响应要求,并且使用的内存量在接受范围之内,那么将时间花在新增功能和修复bug上会更好。业务的需求决定了何为"足够快"和"接受范围之内"
26 2
|
3月前
|
存储 Cloud Native 测试技术
云原生系列Go语言篇-编写测试Part 1
2000年以来,自动化测试的广泛应用可能比任何其他软件工程技术都更能提高代码质量。Go是一种专注于提高软件质量的语言和生态系统,很自然的在其标准库中包含了测试支持。
41 3
|
4月前
|
算法 Java 测试技术
go语言中的测试
go语言中的测试
46 0

热门文章

最新文章