gpt4 book ai didi

r - 为什么指定不同的文件名时 data.table::fread 读取文件需要更多时间?

转载 作者:行者123 更新时间:2023-12-03 11:41:16 25 4
gpt4 key购买 nike

我正在使用以下方法使用 fread 将文件读入 R:

fread("file:///C:/Users/Desktop/ads.csv")  
fread("C:/Users/Desktop/ads.csv") # Just omitted "file:///"

我观察到运行时非常不同:
microbenchmark(  
fread("file:///C:/Users/Desktop/ads.csv"),
fread("C:/Users/Desktop/ads.csv")
)

Unit: microseconds
expr min lq mean median uq max neval cld
fread("file:///C:/Users/Desktop/ads.csv") 5755.975 6027.4735 6696.7807 6235.3365 6506.652 41257.476 100 b
fread("C:/Users/Desktop/ads.csv") 525.492 584.0215 673.7166 647.4745 727.703 1476.191 100 a

为什么运行时间变化如此之大?当我使用 read.csv() 时,两种变体之间没有明显差异

最佳答案

更新:

以下内容已添加到 ?fread :

When input begins with http://, https://, ftp://, ftps://, or file://, fread detects this and downloads the target to a temporary file (at tempfile()) before proceeding to read the file as usual. Secure URLS (ftps:// and https://) are downloaded with curl::curl_download; ftp:// and http:// paths are downloaded with download.file and method set to getOption("download.file.method"), defaulting to "auto"; and file:// is downloaded with download.file with method="internal". NB: this implies that for file://, even files found on the current machine will be "downloaded" (i.e., hard-copied) to a temporary file. See ?download.file for more details.



来自 source of fread :
if (str6 == "ftp://" || str7 == "http://" || str7 == "file://") {
method = if (str7 == "file://") "auto"
else getOption("download.file.method", default = "auto")
download.file(input, tmpFile, method = method, mode = "wb", quiet = !showProgress)
}

也就是说,您的文件正在“下载”到一个临时文件,这应该包括将文件的内容深复制到一个临时位置。 file://并不是真正用于本地文件,而是用于网络中需要在读取之前在本地下载的文件(IIUC;FWIW,这就是 fread 的测试制度在 CRAN 上进行测试时用来模拟文件下载的方法,外部文件下载是不可能的)。

我还注意到你的时间是微秒级的,这可以解释与 read.csv 的差异。 .想象 read.csv读取文件需要 1 秒,而 fread需要 0.01 秒;文件复制需要 .05秒。那么在这两种情况下 read.csv看起来差不多(1 对 1.05 秒),而 fread file:// 看起来慢得多案例(.01 对 .06 秒)。

关于r - 为什么指定不同的文件名时 data.table::fread 读取文件需要更多时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49357652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com