Более быстрый способ чтения файла данных с помощью броненосца в С++

Привет, я только недавно открыл для себя библиотеку armadillo для C++, и она мне очень нравится. Я создаю приложение после его прототипирования в MATLAB, чтобы выполнять его намного быстрее. Проблема, с которой я столкнулся, заключается в том, что когда я пытаюсь загрузить матрицу из файла .mat следующим образом:

A.load("A.mat",raw_ascii); 
//raw_ascii because I can port data to MATLAB as well. 

это занимает около 10 секунд. Мне было интересно, есть ли более быстрый способ сделать это в броненосце или на С++ в целом.

Любые мысли очень ценятся, спасибо.

редактировать 1 - файл, который я пытаюсь прочитать, составляет около 35 МБ.


person anirudhr    schedule 22.03.2013    source источник
comment
Насколько велик файл?   -  person Richard J. Ross III    schedule 23.03.2013
comment
Размер файла составляет около 35 МБ. MATLAB может загрузить его довольно быстро, я не могу сделать это с помощью броненосца!   -  person anirudhr    schedule 27.03.2013


Ответы (1)


hdf5_binary должен работать быстрее. Matlab поддерживает этот формат

person podshumok    schedule 23.03.2013
comment
К сожалению, hdf5_binary работает только с Mac и Linux, как указано в документации. :( - person anirudhr; 27.03.2013
comment
Ну а низкая скорость не является сюрпризом, если вы работаете с окнами :) В этом случае вы можете написать свою load функцию, аналогичную diskio::load_raw_ascii на armadillo_bits/diskio_meat.hpp, но использовать только C-функции - person podshumok; 30.03.2013
comment
Вы по-прежнему можете использовать Armadillo с hdf5 под Windows, просто это потребует немного больше усилий. Включите использование hdf5 в Armadillo (путем редактирования include/armadillo_bits/config.hpp), а затем явно свяжите с C-версией библиотеки времени выполнения hdf5 при компиляции программ. - person mtall; 08.05.2013