Veri çerçevesine yüklemek istediğim CSV veri satırlarını çıkaran bir programım var. Sadece programın yaklaşık 30MB tükürür (verimsiz okumak için bir dosyaya çıkış yönlendirme düşünce, AncakBir veri çerçevesine CSV çıkışı almanın en hızlı yolu nedir?
tmpFilename <- "tmp_file"
system(paste(procName, ">", tmpFilename), wait=TRUE)
myData <- read.csv(tmpFilename) # (I also pass in colClasses and nrows for efficiency)
, bu yüzden optimum performans ile üstesinden istiyorum: Şu anda şöyle verilerin yüklenmesi). Ben textConnection
bu çözmek düşündüm, bu yüzden denedim:
con <- textConnection(system(procName, intern=TRUE))
myData <- read.csv(con)
Bu da, çok daha yavaş çalışır ve ilk çözüm giriş boyutu ile doğrusal olarak düşer oysa textConnection
çözümün performansı katlanarak görünüyor bozulur. En yavaş kısım, textConnection
'u oluşturuyor. read.csv
burada aslında bellekten okuduğundan beri ilk çözümden daha hızlı tamamlıyor.
Soruma göre, sadece read.csv
'u çalıştırmak için en iyi seçeneğim hıza göre bir dosya oluşturuyor mu? Bir textConnection oluşturulmasını hızlandırmak için bir yolu var mı? bonus: neden bir textConnection çok yavaş oluşturuluyor?
Size 'stajyer = TRUE ile tüm çıkışını içeren ekstra vektörü oluştururken, anlaşılmaktadır. Bu vektör sürekli olarak bellek ayıracak olan çıktı üretilirken büyümeye devam edecektir. Bu satırı iki komuta böldüyseniz, 'output <- system (procname, intern = TRUE); con <- textConnection (output) ',' system' komutunun çoğu zaman çekeceğinden şüpheleniyorum. –
sağ, böylelikle onu ayırırsam, en uzun ifade "textConnection (output)" çağrısıdır. "En uzun" ile, "sistem" bir kaç saniye sürdüğünü, "read.csv" başka bir kaç saniye sürdüğünü, "textConnection()" 4 dakika sürdüğünü kastediyorum. – Hudon
Vay. Bu işletim sistemi nedir? Eğer Linux ise, RAM'den başka hiçbir şey kullanmayacak olan '/ dev/shm' altındaki dosyayı yaratacağım. –