Форум программистов, компьютерный форум CyberForum.ru

Максимально эфективное бинарное чтение из файла под Windows - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
14.12.2012, 02:50     Максимально эфективное бинарное чтение из файла под Windows #1
Задача: максимально эфективно (быстро) читать данные из файла. Каким это будет происходить образом - в виде си функции, с++ или винапи функции не имеет значения, имеет значение лишь результат.
Как мне известно размер странички в Windows = 4Кб так что быстрее всего по идее чтение должно происходить если читать по 4 кб, но как лучше всего это сделать?

Вообще в итоге я буду использоать 64битные значения после того как считаю кусок файла. Вот мой маленький набросок, который првда закончился фиаско потому что стандартная fread, как оказалось, имеет буфер под чтение меньше 4 кб так что нужно что-то другое быстрое
C++
1
2
3
4
5
6
7
    FILE* readFrom = fopen("input.bin","rb"); _ASSERT(readFrom);
    uint64_t bufferRead[64];//мой буффер на 4 кб
    size_t countBlocks;//считано блоков
 
        // вернёт 0 потому что fread не может считать 4096 байтиков
    countBlocks = fread(bufferRead,1,4096,readFrom);
    fclose(readFrom);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2012, 02:50     Максимально эфективное бинарное чтение из файла под Windows
Посмотрите здесь:

Бинарное чтение из файла с пoмощью функции fread() C++
Бинарное считывание с файла и бинарный вывод. C++
C++ как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла?
Чтение из файла. Повторное чтение файла C++
Найти сумму максимально отрицательного и максимально положительного элемента массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2012, 22:40     Максимально эфективное бинарное чтение из файла под Windows
Еще ссылки по теме:

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. C++
Соединение двух программ в одну (бинарное сложение и бинарное сравнение) C++
C++ Считать из файла целочисленный массив C[N] и сформировать из него максимально возможную матрицу А [n x n]

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
17.12.2012, 22:40  [ТС]     Максимально эфективное бинарное чтение из файла под Windows #41
Цитата Сообщение от WhiteP Посмотреть сообщение
Если размер файла меньше 512 байт, например, то писать и не будет. Последний блок также может не записаться и в других случаях, т.к. не все то, что кратно 8 кратно 512.
Так я понимаю, но полные блоки по 64 кб оно у меня тоже не пишет. Щас буду мучить его.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
17.12.2012, 22:40     Максимально эфективное бинарное чтение из файла под Windows
Ответ Создать тему
Опции темы

Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru