-3
很長時間瀏覽了stackoverflow上的問題,發現很多有用的答案,我終於遇到了一些我無法找到答案的東西。這也是我註冊時開始回饋社區的時候,因爲當我遇到一個我可以做出有意義貢獻的問題時(也許還有一天)。爲什麼read.csv這麼慢?
不管怎樣,我的第一個計算器的問題,所以請溫柔與我:
我深知R中的read.csv功能絕不是在讀取數據時,許多問題,最有效的方法答案涉及read.csv的替代方案,但這個問題的重點略有不同,我想有兩個問題需要問。
- 我想知道的是爲什麼read.csv太慢了?什麼是造成其糟糕表現的開銷?
- 此外,我有很多計算機的財富,我可以測試一些代碼,包括一臺帶SSD的臺式機和一臺帶有標準硬盤的臺式機,在最近的測試中,我一直沒能找到一個明顯的區別在任何一臺機器上讀取時間(我預計使用固態驅動器的讀取時間會更快),爲什麼會出現這種情況?
一些代碼重現排序基準的,我一直在測試:
bm_io = function (runs = 3, n = 1e6, ncol = 1000) {
set.seed(1)
on.exit(set.seed(NULL))
x = rnorm(n)
m = data.frame(matrix(x, ncol = ncol))
timings = data.frame(user = numeric(2 * runs), system = 0,
elapsed = 0, test = c("write", "read"))
for (i in 1:runs) {
fname = tempfile(fileext = ".csv")
fname = "temp.csv"
invisible(gc())
timings[2 * i - 1, 1:3] = system.time({
write.csv(m, fname, row.names = FALSE)
})[1:3]
timings[2 * i, 1:3] = system.time({
read.csv(fname)
})[1:3]
unlink(fname)
}
timings
}
我希望有這方面的那些想法或意見,另外,如果我錯過了一個類似的問題,請隨時自由地指向正確的方向。非常感謝
嗨,感謝您花時間回覆。我知道'read.csv'有很多參數可以提高性能。雖然他們沒有一個像'data.table'包中的'fread'那麼接近。我的問題更多的是關於什麼使得'read.csv'與其他一些選擇相比如此緩慢,以及爲什麼我從SSD或硬盤讀取數據時看不到有什麼區別。 – jamieRowen