Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: бинарный поиск по файлу
Форум на CrossPlatform.RU > Разработка > С\С++
B_u_R_n
Есть у кого реализация, без загрузки всего файла в память, файл 100+мб, в нем отсортированные хэши, хочу организовать поиск по хэшам бинарным поиском , только вот если честно как ума не приложу, имею ввиду не загружая весь файл в память...
Iron Bug
если система - венда, то можно мапить файл на память. это работает быстро, у меня были многогигабайтные файлы данных с графикой с спецформате - мапирование работало на ура.
думаю, под линём тоже должно работать без проблем, просто у меня не было опыта работы под линём с такими жирными файлами. но мапирование там есть.
BRE
Цитата(Iron Bug @ 19.12.2011, 7:41) *
думаю, под линём тоже должно работать без проблем, просто у меня не было опыта работы под линём с такими жирными файлами. но мапирование там есть.

и прекрасно работает. :)
100+мб файлы это по сегодняшним меркам - не размер. :) Его можно мапить полностью в память даже на 32 битной платформе и работать как будто он в памяти, ОС сама будет загружать нужные области.
На 64 битных платформах можно мапить файлы и побольше, я для интереса мапил 40 Гб файл с фильмом "Аватар". :)
wiz29
Цитата(BRE @ 19.12.2011, 9:43) *
...
и прекрасно работает. :)


При высокой нагрузке на изменения положения маппированного куска, в W7 32разрядном софте по кр мере, у меня были проблемы.
ps на больших файлах более 5Гб
B_u_R_n
Цитата(wiz29 @ 19.12.2011, 13:18) *
Цитата(BRE @ 19.12.2011, 9:43) *
...
и прекрасно работает. :)


При высокой нагрузке на изменения положения маппированного куска, в W7 32разрядном софте по кр мере, у меня были проблемы.
ps на больших файлах более 5Гб

что вы подразумеваете под мапить ?
MapViewOfFile(...);
если да то хз как обрезать в нем \n и сформировать массив строк
BRE
Цитата(wiz29 @ 19.12.2011, 13:18) *
При высокой нагрузке на изменения положения маппированного куска, в W7 32разрядном софте по кр мере, у меня были проблемы.

Хоть я про linux писал, но это будет актуально для всех платформ.
При постоянных "прыжках" по файлу, ОС вынуждена постоянно загружать и мапить в память актуальное окно. Это не быстро - чудес не бывает.
ТС все же хочет осуществлять поиск в этом файле, а это более менее последовательный доступ.
Iron Bug
Цитата(B_u_R_n @ 19.12.2011, 16:17) *
если да то хз как обрезать в нем \n и сформировать массив строк

это зависит от структуры твоего файла. как сам сделаешь - так и будет. он тебе мапит кусок файла на область памяти. формат файлов - дело личное.
B_u_R_n
Цитата(Iron Bug @ 19.12.2011, 14:52) *
Цитата(B_u_R_n @ 19.12.2011, 16:17) *
если да то хз как обрезать в нем \n и сформировать массив строк

это зависит от структуры твоего файла. как сам сделаешь - так и будет. он тебе мапит кусок файла на область памяти. формат файлов - дело личное.

ну я о том что не перегонять же весь массив в массив указателей на строки
Алексей1153
B_u_R_n, если душа того велит, можно и перегнать ))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.