2014-12-16 6 views
2

Я прочитал статью http://hannes.muehleisen.org/ssdbm2014-r-embedded-monetdb-cr.pdf и был рад прочитать, что data.table выполнен очень хорошо. Однако я был удивлен, что выбор, выбор/проекция и группировка были настолько медленными для больших документов (1 ГБ и 10 ГБ). Я думаю, что data.table потрясающе, и я нахожу удивительным, что он на 5x10x медленнее для больших наборов данных.Выбор/Проектирование/Группировка в больших наборах данных

Я понимаю, что я не должен ставить много запаса в микро-тестах, и я этого не делаю. Фактически, после прочтения статьи я больше убежден, что использование data.table выгодно из-за его последовательного синтаксиса и простоты. Я не только забочусь о сырой работе. Я задаю этот вопрос, потому что авторы data.table заинтересованы в рассмотрении этих вопросов и прекрасно объясняют, почему (или почему нет) data.table выполняет то, как это делается. Это еще одна причина, по которой я нравится люблю использовать data.table.

Thanks Matt Dowle et al.

ответ

3

Спасибо за ссылку и похвалу. Очень интересно читать. Три точки, кажется, действительно впечатляет меня (из многих интересных вещей) являются:

  • Встраивание базы данных в среде в R/статистики (обратной нормы).

  • Приведение двух систем под тем же адресным пространством.

  • Преобразование из примитивных типов в SEXP без необходимости копирования (/ дополнительная память).

, хотя для этого требуются модификации источника.

На сравнений data.table однако здесь некоторые проблемы:

Они сравнивают с v1.8.10, которая больше, чем год назад. С тех пор data.table развилась QUITE A LOT.

  • Более быстрая и надежная сортировка оснований на основе MSD (для целых чисел, удвоений, символов, integer64). Поскольку data.table использует упорядочение для поиска индексов группы для выполнения агрегаций, объединений и почти всего остального, это означает, что почти все операции намного быстрее.

  • Внедрение GForce во избежание времени, затрачиваемого на оценку j-выражений для каждой группы, которая делает adhoc-группировку с этими функциями еще быстрее.

  • Множество исправлений ошибок и функций, реализованных - исправления утечки памяти, более эффективного использования памяти, избегая ненужных копий и т. Д. Check news.

  • Быстрее Подменит (используя собственную реализацию), быстрый двоичный поиск (следовательно, быстрее соединения и подмножество), а в последнее время автоматическое индексирование и т.д ..

Также не ясно, какой компилятор оптимизация они использовали.

Чтобы дать представление об ускорении с 1,8.10, посмотрите на this recent benchmark от Matt.

# data.table 1.9.2 50GB 10,000 groups < 1 minute (from Matt's benchmark) 
# data.table 1.8.10 10GB  500 groups ~ 18 minutes! (from their article) 

Группировка над 50GB данных с 10000 групп с использованием data.table занимает меньше минуты (на процессор 2.5Ghz см подробные спецификации в ссылке), где, как агрегирование 10GB данных с помощью всего 500 групп приняли около 18 минут в их бенчмарке (на процессоре 3.4 ГГц).

Они не говорят о размерах кеша своей машины в статье, размерах данных, количестве столбцов для группировки и т. Д. (Или я пропустил его чтение из текста).

И с тех пор уже есть некоторые исправления. Прогнозы будут еще быстрее, как только this FR позаботится. Было бы интересно повторить этот тест (и, возможно, больше тестов), хотя я не могу найти ссылку на исходный код в своей статье.

Но опять же очень хорошо читать.

+1

Спасибо за разъяснение. Я смущен тем, что не проверял версию data.table, используемую в документе. Я уже видел последние тесты Мэтта, и поэтому я был удивлен их выводами. Кстати, даже авторы статьи были удивлены тем, насколько хорошо работает data.table! Продолжайте хорошую работу. – Vijay

+0

Как они сравниваются с чтением файлов? Функция 'fread' является большим стимулом для эффективности пользователя. –

+0

@BondedDust, было бы интересно, конечно. Они не сравнивают файлы для чтения. Они кратко упоминают о MonetDB, используя файлы с отображением памяти для чтения/записи, но не в контексте скорости/эффективности. Непонятно, как они справляются с этим/насколько хорошо он сравнивается с «fread». – Arun

Смежные вопросы