|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||
Максимально эфективное бинарное чтение из файла под Windows14.12.2012, 02:50. Показов 6057. Ответов 40
Метки нет (Все метки)
Задача: максимально эфективно (быстро) читать данные из файла. Каким это будет происходить образом - в виде си функции, с++ или винапи функции не имеет значения, имеет значение лишь результат.
Как мне известно размер странички в Windows = 4Кб так что быстрее всего по идее чтение должно происходить если читать по 4 кб, но как лучше всего это сделать? Вообще в итоге я буду использоать 64битные значения после того как считаю кусок файла. Вот мой маленький набросок, который првда закончился фиаско потому что стандартная fread, как оказалось, имеет буфер под чтение меньше 4 кб так что нужно что-то другое быстрое ![]()
0
|
||||||
| 14.12.2012, 02:50 | |
|
Ответы с готовыми решениями:
40
Бинарное чтение файла
Бинарное чтение из файла |
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 14.12.2012, 02:55 | |
|
Gepar, а проход до конца файла и копирование всего блока текста не подойдет?
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 14.12.2012, 02:56 | |
|
Gepar, тебе нужно максимально быстро считать 4 кила? Ты прикалываешься?
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|||||||
| 14.12.2012, 03:01 [ТС] | |||||||
|
Пока решил использовать с++ вариант, но я очень сомневаюсь в его максимально высокой скорости работы с этой иерархией наследования и вообще с кучей всего довешенного к потокам лишнего для моей задачи.
0
|
|||||||
|
|
|||||||||||
| 14.12.2012, 03:01 | |||||||||||
|
На мой взгляд проще всего считать порциями по 4 кб вот так
0
|
|||||||||||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 14.12.2012, 03:02 [ТС] | |
|
MrGluck, ну цель = максимально быстро читать, зачем мне проход к концу файла я вообще не понял ...
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 14.12.2012, 03:02 | |
|
Gepar, если все лишнее, то че ты апи системное не заюзаешь? Жесть какая-то. Если у тебя файл 4 кила, то разницы в скорости не заметишь, даже если по байтам его читать будешь. А если он больше, то я не понимаю, что ты такой скромный? У тебя на системе 16 метров памяти что ли стоит? Читай адекватные буфферы, а не по 4 кила, как мышь...
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 14.12.2012, 03:03 | |
|
0
|
|
| 14.12.2012, 03:04 | |
|
Не по теме: Vourhey, речь идёт не о размере файла 4 кБ а о том что максимальная производительность HDD i/o наблюдается при размерах буффера около 4 кБ. Т.е лучше всего(быстрей всего) файл в 1 Гб читать буффером по 4 кБ не больше и не меньше.
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 14.12.2012, 03:07 | |
|
Gepar, имею ввиду взять и скопировать весь текст в блок памяти, предварительно узнав размер блока.
И потоки точно медленнее функций т.к. за безопасность надо платить. Тот же printf быстрее cout, с чтением из файла аналогично.
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 14.12.2012, 03:08 | |
|
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 14.12.2012, 03:09 [ТС] | |
|
-=ЮрА=-, блин, твой пример заработал, хотя мой не работал. Правда это помогло тем что я понял почему у меня не читало - я буфер недостаточный выделял потому что затупил вот оно увидев что моего буфера нехватало и не читало (хотя странное поведение, я ожидал что если бы буфера не хватало то я получал бы выход за граници массива и в итоге ошибку при обращении к чужой памяти). Большое спасибо
0
|
|
| 14.12.2012, 03:11 | |
|
Не по теме: У меня одного в голову сразу лезет "Понемножечку, помаленечку, По копеечке, по зёрнышку, по семечке..." ?)
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 14.12.2012, 03:11 [ТС] | |
|
Vourhey, ну проаргументируй, тема то интересная. Я слышал эту информацию от хорошего программиста поэтому поверил ему, если ты знаешь резкие аргументы против то приведи их (только не в виде личных наблюдений же). Тот кто мне дал эту подсказку проаргументировал почему, в общем-то я и написал это в начале.
0
|
|
| 14.12.2012, 03:11 | |
|
Не по теме: PS:Gepar, лично мне кажется целесообразней не ограничиваться производительностью головок HDD а производить обработку файла в оператвке в буффере аккурат под размер файла (благо современные планки памяти позволят чуть ли не поверхность HDD в памяти держать) и производить все операции над файлом именно в ОЗУ - будет в тысячи раз быстрей. Конечно сам я максимум держал в оперативе 300 Мб данных не более, не было необходимости держать больше
0
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 14.12.2012, 03:12 [ТС] | |
|
MrGluck, ну блин, предлагаешь сразу хапонуть 2 гб в оперативе, пошифровать их там (использовав ещё + 100 мб) и потом записать?
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 14.12.2012, 03:13 | |
|
Gepar, 4 Гб оперативки нынче стоит 700р.
0
|
|
|
|
|||
| 14.12.2012, 03:16 | |||
0
|
|||
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 14.12.2012, 03:18 [ТС] | |
|
0
|
|
| 14.12.2012, 03:18 | |
|
Помогаю со студенческими работами здесь
20
Бинарное чтение файла Бинарное чтение файла
Бинарное чтение из файла с пoмощью функции fread() Бинарное дерево поиска. Как осуществить запись в файл и чтение из файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|