Спасибо за ссылку и похвалу. Очень интересно читать. Три точки, кажется, действительно впечатляет меня (из многих интересных вещей) являются:
Встраивание базы данных в среде в 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 позаботится. Было бы интересно повторить этот тест (и, возможно, больше тестов), хотя я не могу найти ссылку на исходный код в своей статье.
Но опять же очень хорошо читать.
Спасибо за разъяснение. Я смущен тем, что не проверял версию data.table, используемую в документе. Я уже видел последние тесты Мэтта, и поэтому я был удивлен их выводами. Кстати, даже авторы статьи были удивлены тем, насколько хорошо работает data.table! Продолжайте хорошую работу. – Vijay
Как они сравниваются с чтением файлов? Функция 'fread' является большим стимулом для эффективности пользователя. –
@BondedDust, было бы интересно, конечно. Они не сравнивают файлы для чтения. Они кратко упоминают о MonetDB, используя файлы с отображением памяти для чтения/записи, но не в контексте скорости/эффективности. Непонятно, как они справляются с этим/насколько хорошо он сравнивается с «fread». – Arun