Ускоренное преобразование 2 миллионов строк строк даты в POSIX.ct
У меня есть CSV, который включает в себя около 2 миллионов строк строк даты в формате:
2012/11/13 21:10:00
Позвоните такcsv$Date.and.Time
Я хочу преобразовать эти даты (и сопровождающие их данные) в xts как можно быстрее
Я написал скрипт, который прекрасно выполняет преобразование (см. Ниже), но он ужасно медленный, и я хотел бы максимально ускорить это.
Вот моя текущая методология. У кого-нибудь есть предложения, как сделать это быстрее?
dt <- as.POSIXct(csv$Date.and.Time,tz="UTC")
idx <- format(dt,tz=z,usetz=TRUE)
Таким образом, скрипт преобразует эти строки даты вPOSIX.ct
, Затем он делает преобразование часового пояса, используяformat
(z
переменная, представляющая TZ, в который я конвертирую). Я тогда делаю регулярныйxts
вызовите, чтобы сделать эту серию XTS с остальными данными в CSV.
Это работает на 100%. Это просто очень, очень медленно. Я пытался запустить это параллельно (это ничего не делает; если что-нибудь делает это хуже). Что я имею в виду под «медленным»?
user system elapsed
155.246 16.430 171.650
Это на 3GhZ, 16 ГБ оперативной памяти 2012 МБ Pro. Я могу получить примерно половину этого на аналогичном процессоре с 32 ГБ ОЗУ на машине с Win7
Я уверен, что у кого-то есть идея получше - я открыт для предложений черезRcpp
и т.д. Однако,в идеале решение работает с CSV, а не каким-либо другим методом, таким как настройка базы данных, Сказав это, я собираюсь сделать это любым способом, который даст самое быстрое преобразование.
Я был бы очень признателен за любую помощь на всех. Заранее спасибо.