Przyspieszenie konwersji 2 milionów wierszy ciągów dat do POSIX.ct
Mam csv, który zawiera około 2 milionów wierszy ciągów dat w formacie:
2012/11/13 21:10:00
Nazwijmy tocsv$Date.and.Time
Chcę przekonwertować te daty (i ich dane towarzyszące) na xts tak szybko, jak to możliwe
Napisałem skrypt, który wykonuje konwersję w porządku (patrz poniżej), ale jest strasznie powolny i chciałbym to przyspieszyć tak bardzo, jak to możliwe.
Oto moja obecna metodologia. Czy ktoś ma jakieś sugestie, jak to zrobić szybciej?
dt <- as.POSIXct(csv$Date.and.Time,tz="UTC")
idx <- format(dt,tz=z,usetz=TRUE)
Skrypt konwertuje te ciągi dat naPOSIX.ct
. Następnie wykonuje konwersję strefy czasowej za pomocąformat
(z
jest zmienną reprezentującą TZ, do którego konwertuję). Następnie robię regularnexts
wywołanie, aby uczynić to serią xts z resztą danych w csv.
To działa w 100%. Jest bardzo, bardzo powolny. Próbowałem uruchomić to równolegle (nic nie robi; jeśli cokolwiek to pogorszy). Co mam na myśli, mówiąc „wolno”?
user system elapsed
155.246 16.430 171.650
To jest na 3GhZ, 16 GB RAM 2012 MB Pro. Mogę uzyskać o połowę mniej na podobnym procesorze z 32 GB pamięci RAM na komputerze z Win7
Jestem pewien, że ktoś ma lepszy pomysł - jestem otwarty na sugestie za pośrednictwemRcpp
itd. Jednakidealnie rozwiązanie działa raczej z csv niż z inną metodą, np. z konfiguracją bazy danych. Powiedziawszy to, zamierzam to zrobić za pomocą dowolnej metody, która zapewni najszybszą konwersję.
Byłbym bardzo wdzięczny za wszelką pomoc. Z góry dziękuję.