《R语言数据分析》——3.3 测试
正如在前述章节中讨论过的内容一样,借助microbenchmark包,我们可以在一台机器上重复执行若干遍函数,以获得一些可重现的性能测试结果。
现在,需要先定义作为测试基准的函数,以下一些函数都是从前面样例中挑选出来的:
前面已经介绍过dplyr包的summarise函数需要耗费一些时间用于数据预处理,因此下面我们将重新定义一个函数能够支持在聚集操作时生成新的数据结构:
类似地,在测试data.table时,也需要一些专门用于测试环境的附加变量,由于hlf?ights_dt已经根据DayofWeek的值进行了排序,我们可以为测试创建一个新的data.table对象:
更进一步地,说清楚该对象没有键值可能也有些必要:
现在,我们可以对data.table测试案例上定义函数,并且实现对象到data.table的转换,同时为了和dplyr一致,在转换后的data.table上添加键值:
到这一步,我们已经完成了测试的准备任务,下面可以导入microbenchmark包继续后面的工作了:
结果非常不错:从之前高于2000毫秒的执行时间,经过工具优化后,缩短为只需要大约1毫秒的时间:
因此,看起来dplyr包是最有效的解决方法,尽管它需要考虑一些额外(对data.frame进行分组)的操作,该方法依然具有毋庸置疑的优势。事实上,如果我们已经准备好了一个data.table对象,就能够节约从data.frame转换到data.table的时间,而data.table的效果要比dplyr更好。不过我估计读者可能并未注意到两个高效方案在时间上的差别。在处理更大规模的数据集时,这两种方法性能都不错。
值得注意的是,dplyr包只能处理data.table对象,因此,我们不用固定在任意一种方法上,在必要时同时使用两种方法都可以。以下是一个POC样例:
现在,我们已经对使用data.table或者是dplyr计算数据分组平均值的过程非常清楚了。但假如是更复杂的操作又该如何解决呢?
数据分析思维(三)|测试/对比思维 测试/对比思维可以说在数据分析的工作中随处可见。当我们通过各种手段得到一些结果数据后,如何评价结果的好坏呢?这个时候你可能会想到和标准结果进行比较、和之前的数据进行对照等等方法,这些方法归根结底就是一种测试/对比思维。在该思维中最常用的方法就是A/B测试,本文我们就重点了解一下A/B测试的思想及其应用案例。
相关文章
- CRP多语言编译/测试插件使用之基础环境
- 测试并发应用(二)监控Phaser类
- 菜鸟学自动化测试(六)----selenium 命令之文字范本匹配
- 黑盒测试方法论
- Testing - 敏捷测试(Agile Testing)
- php多线程抓取信息测试例子
- 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试
- Python 800 道习题 (°ー°〃) 测试你学废了嘛
- VC 调用 MinGW 生成的dll(未测试)
- C语言使用技巧(二十四):C测试电脑能分配多少内存
- 成为一名合格的自动化测试工程师所要知道的学习步骤及学习误区
- YCSB benchmark测试mongodb性能——和web服务器测试性能结果类似
- 接口测试——requests接口请求(十)
- 干货||快速了解手工测试&自动化测试