Оптимизация сводных табличных данных в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Оптимизация сводных табличных данных в C++

Сообщение Anonymous »

Недавно я работаю над векторизацией для оптимизации производительности на C++. На данный момент он использует CSV в качестве данных. Пока что построение этих табличных данных для векторизации на основе считанных данных является узким местом. При CSV-файле размером 430 МБ со спецификацией 1 050 000 x 9 время, затраченное на каждый процесс, составляет (применена оптимизация O2):
  • чтение CSV с помощью RapidCSV — 3,2 секунды ( pandas.read_csv — 4,8 секунды)
  • запись 3D-данных с помощью Eigen::Tensor со значениями из других столбцов, выступающих в качестве индексов — 18,4 секунды (DataFrame.pivot — 1,8 секунды) )
  • Основная функция — 0,9 секунды (с pandas.DataFrame — более 1 часа)
Запись трехмерные данные» — это почти то же самое, что построить сводную таблицу на основе данных CSV с index=datetime_column, columns=category_column,values=data_columns. Хотя моя опорная точка представляет собой простой алгоритм, считывающий уникальные значения из datetime_column и Category_column, а затем записывающий данные с индексом, найденным в datetime_column, Category_column, при циклическом цикле всех данных CSV. Я использую MSVC из VS2022 + CMake для создания программы.
  • Должен ли я использовать некоторые пакеты, которые оптимизируют сводку данных с помощью специального класса табличных данных? Есть ли у кого-нибудь рекомендации из своей практики?
  • Есть ли возможность оптимизации в алгоритме свода данных? Лучший контейнер поиска для поиска по индексу? Меньше промежуточного использования памяти? Или лучший алгоритм для сведения данных?


Подробнее здесь: https://stackoverflow.com/questions/787 ... ation-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»