бинарный поиск по файлу |
Здравствуйте, гость ( Вход | Регистрация )
бинарный поиск по файлу |
B_u_R_n |
18.12.2011, 21:58
Сообщение
#1
|
Студент Группа: Участник Сообщений: 22 Регистрация: 6.12.2011 Пользователь №: 3048 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть у кого реализация, без загрузки всего файла в память, файл 100+мб, в нем отсортированные хэши, хочу организовать поиск по хэшам бинарным поиском , только вот если честно как ума не приложу, имею ввиду не загружая весь файл в память...
|
|
|
Iron Bug |
19.12.2011, 6:41
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
если система - венда, то можно мапить файл на память. это работает быстро, у меня были многогигабайтные файлы данных с графикой с спецформате - мапирование работало на ура.
думаю, под линём тоже должно работать без проблем, просто у меня не было опыта работы под линём с такими жирными файлами. но мапирование там есть. Сообщение отредактировал Iron Bug - 19.12.2011, 6:44 |
|
|
BRE |
19.12.2011, 8:43
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
думаю, под линём тоже должно работать без проблем, просто у меня не было опыта работы под линём с такими жирными файлами. но мапирование там есть. и прекрасно работает. 100+мб файлы это по сегодняшним меркам - не размер. Его можно мапить полностью в память даже на 32 битной платформе и работать как будто он в памяти, ОС сама будет загружать нужные области. На 64 битных платформах можно мапить файлы и побольше, я для интереса мапил 40 Гб файл с фильмом "Аватар". Сообщение отредактировал BRE - 19.12.2011, 9:03 |
|
|
wiz29 |
19.12.2011, 12:18
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
|
|
|
B_u_R_n |
19.12.2011, 13:17
Сообщение
#5
|
Студент Группа: Участник Сообщений: 22 Регистрация: 6.12.2011 Пользователь №: 3048 Спасибо сказали: 0 раз(а) Репутация: 0 |
... и прекрасно работает. При высокой нагрузке на изменения положения маппированного куска, в W7 32разрядном софте по кр мере, у меня были проблемы. ps на больших файлах более 5Гб что вы подразумеваете под мапить ? MapViewOfFile(...); если да то хз как обрезать в нем \n и сформировать массив строк |
|
|
BRE |
19.12.2011, 13:48
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
При высокой нагрузке на изменения положения маппированного куска, в W7 32разрядном софте по кр мере, у меня были проблемы. Хоть я про linux писал, но это будет актуально для всех платформ. При постоянных "прыжках" по файлу, ОС вынуждена постоянно загружать и мапить в память актуальное окно. Это не быстро - чудес не бывает. ТС все же хочет осуществлять поиск в этом файле, а это более менее последовательный доступ. |
|
|
Iron Bug |
19.12.2011, 13:52
Сообщение
#7
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
B_u_R_n |
19.12.2011, 15:39
Сообщение
#8
|
Студент Группа: Участник Сообщений: 22 Регистрация: 6.12.2011 Пользователь №: 3048 Спасибо сказали: 0 раз(а) Репутация: 0 |
если да то хз как обрезать в нем \n и сформировать массив строк это зависит от структуры твоего файла. как сам сделаешь - так и будет. он тебе мапит кусок файла на область памяти. формат файлов - дело личное. ну я о том что не перегонять же весь массив в массив указателей на строки |
|
|
Алексей1153 |
20.12.2011, 6:02
Сообщение
#9
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
B_u_R_n, если душа того велит, можно и перегнать ))
|
|
|
Текстовая версия | Сейчас: 19.4.2024, 17:06 |