ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-01-28 19:32:29  阅读:208  来源: 互联网

标签:文件 读取 千倍 read fread table data


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 倍!


标签:文件,读取,千倍,read,fread,table,data
来源: https://www.cnblogs.com/shiyanhe/p/14341596.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有