专栏首页实验盒R读取大文件速度太慢?来试试能提速两千倍的fread

R读取大文件速度太慢?来试试能提速两千倍的fread

R 的 read.tableread.csv 读取文件速度比较慢。尤其在读取稍微大一点的数据,需要等很长时间。

在需要读取大文件时,尤其读取列数特别多的文件,不妨试试 data.table 包(https://cran.r-project.org/web/packages/data.table)的 fread (Fast and friendly file finagler)。它的参数与 read.table 函数类似,但读取速度有非常大提升。

提速两千倍并不是标题党,而是在一个 489 行、1079796 列、1G 纯文本文件中的实测结果。测试机器配置为 2T 内存、80 核 160 线程 CPU(四路Xeon Gold 6248)、SSD 硬盘(RAID 5)。

使用 read.table 读取文件:

times.start <- Sys.time()
file.readtable <- read.table('test.file', sep = ' ', header = TRUE, row.names = 1)
time.end < -Sys.time()
time.running <- time.end-time.start
print(time.running)

读取速度非常慢,竟然花了 20.87 小时,我也懒得去研究是什么原因:

Time difference of 20.87034 hours

使用 fread 读取文件:

library("data.table")
time.start <- Sys.time()
file.fread <- fread('test.file', sep = ' ', header = TRUE)
time.end <- Sys.time()
time.running <- time.end-time.start
print(time.running)

需要 35.71 秒,还可以接受:

Time difference of 35.71124 secs

两种方法读取过程占用内存大约在 4.9G,但 fread 要快很多,速度提高了接近 2100 倍!

本文分享自微信公众号 - 实验盒(gh_8a85afc0b064),作者:实验盒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 好强一个Julia!CSV数据读取,性能最高多出R、Python 22倍

    不过,Julia自2009年出现以来,凭借其速度、性能、易用性及语言的互操性等优势,已然掀起一股全新的浪潮。

    量子位
  • EMCP 新物料性能测试中问题反思和心得

    eMCP是相较eMMC更高阶的存储器件,它将eMMC与LPDDR封装为一体,在减小体积的同时还减少了电路链接设计,主要应用于千元以上的智能手机中。

    用户5521279
  • 数据流编程教程:R语言与DataFrame

    DataFrame DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量。 一. DataFrame数据流编程 ? 二....

    小莹莹
  • 手把手教你用R语言读取CSV文件

    读取CSV文件最好的方法是使用read.table函数,许多人喜欢使用read.csv函数,该函数其实是封装的read.table函数,同时设置read.tab...

    华章科技
  • 读论文系列:Object Detection ICCV2015 Fast RCNN

    Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍;训练速度是SPP-ne...

    梦里茶
  • PHP中的文件系统函数(三)

    总算来到我们最关心的部分了,也就是 f 相关函数的操作。基本上大部分的文件操作都是以今天学习的这些内容为基础的,话不多说,我们就一个一个的来学习学习吧。

    硬核项目经理
  • PCOX-自定义函数wfnread分析

    发完上期的推文,过冷水中觉得“庖丁解牛”的典故用好牵强,明明“愚公移山”更加符合我们的故事,具体内容见愚公移山。

    matlab爱好者
  • 「SDL第八篇」支持倍速与慢放的YUV视频播放器

    今天向大家介绍一下如何通过 SDL 实现一个YUV视频播放器。它与上次介绍的音频播放器一样,也是一个简单的不能再简单的播放器了。只不过一个是播放的音频PCM数据...

    音视频_李超
  • 利用cpu缓存实现高性能程序

    先来看计算速度。单颗CPU计算速度目前在2GHz-4GHz之间,以2.5GHz计即每秒钟计算25亿次,每个时钟周期耗时1/2.5GHz==0.4纳秒。当前所有的...

    陶辉
  • 人生苦短,让你的Git飞起来吧

    git是一款超极优秀的版本控制工具,包括Linus大神的linux项目在内的千千万万的项目在使用。你可以使用Eclipse插件管理,亦可以使用终端工具。

    技术小黑屋
  • 知识图谱数据库读写性能基准测试

    知识图谱数据库是NoSQL数据库中增速最快的一个分支,它在大数据和人工智能领域的地位逐渐凸显。但是目前主流的图数据库产品大都属于海外产品,且售价极其高昂,为了解...

    大数据文摘
  • 吃瓜笔记 | 旷视研究院解读Light-Head R-CNN:平衡精准度和速度

    主讲人:黎泽明 | 旷视研究院研究员 屈鑫 编辑整理 量子位 出品 | 公众号 QbitAI 12月20日晚,量子位·吃瓜社联合Face++论文解读系列第三期开...

    量子位
  • 【R语言】data.table让你的读取速度提升百倍

    不知道大家有没有用read.table和read.csv读取过文件,当文件不大的时候你可能还感觉不出读取速度,但是当文件比较大的时候,比如有上万行的时候...

    生信交流平台
  • 太牛了,MySQL每秒写入57万条数据

    一个朋友接到一个需求,从大数据平台收到一个数据写入在20亿+,需要快速地加载到MySQL中,供第二天业务展示使用。

    南风
  • 实战:爬取简书之多线程爬取(一)

    在上上篇我们编写了一个简单的程序框架来爬取简书的文章信息,10分钟左右爬取了 1万 5千条数据。

    渔父歌
  • iozone - a filesystem benchmark tool 主要是用来测试文件系统 性能

           磁盘设备之上是文件系统,测试磁盘的工具往往就是调用块设备驱动的接口进行读写测试。而文件系统的测试软件就是针对文件系统层提供的功能进行测试,包括文件...

    xuyaowen
  • 斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    【新智元导读】 斯坦福大学的新研究构建一个名为 NoScope 的深度学习视频对象检测系统,利用视频的局部性对 CNN 模型进行优化,相比当前性能最好的 YOL...

    新智元
  • web实时长图实践

    本文将介绍几种浏览器端和服务器端 web 实时生成图片的方案,欲知详情请看文章详情。

    QQ音乐技术团队
  • 【译文】MapReduce:大型集群上的简化数据处理

    MapReduce是一个编程模型,以及处理和生成大型数据集的一个相关实现,它适合各种各样的现实任务。用户指定计算的map和reduce函数。底层运行系统自动地...

    Gaussic

扫码关注云+社区

领取腾讯云代金券