как эффективно читать большой файл в блоках в R - PullRequest
0 голосов
/ 12 ноября 2011

Я читаю большой файл событий в R, около 2 миллионов строк, разбираю каждую строку в наборе атрибутов событий и сохраняю в моей матрице.Я предварительно выделяю огромную матрицу (2 миллиона событий), читаю небольшой фрагмент из файла, многократно обрабатываю его.Но обработка файла занимает слишком много времени.Мне было интересно, что я могу сделать, чтобы улучшить производительность.Вот мой фрагмент кода:

numEvents <<- 2000000;
eventLog <<- matrix(0,nrow=numEvents,ncol=4);

loadEvents <- function(inputfile) {
    con <- file(inputfile, "r", blocking = FALSE)
    batch <- 1000
    lines <- readLines(con,n=batch)
    while(length(lines) > 0 && eventCount <= numEvents) {
        for (i in 1:length(lines))
            storeEvent(lines[i]); # processes and stores each event in eventlog
        lines <- readLines(con,n=batch)
    }
    close(con);
}

Как вы думаете, размер партии не является оптимальным?

Любые идеи здесь очень ценятся.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

Нашел проблему в моей обработке.Я использовал список в качестве карты, чтобы содержать сопоставления для событий.Список по своей сути не является хэш-картой, поэтому он может быть довольно медленным.Я изменил его, чтобы использовать hash (), и производительность улучшилась в десять раз.Спасибо.

0 голосов
/ 12 ноября 2011

Может быть, ваш случай подходит для расширения R (в C или C ++)? Но я не знаю много R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...