crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> бинарный поиск по файлу
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  


Цитата(Iron Bug @ 19.12.2011, 7:41) *
думаю, под линём тоже должно работать без проблем, просто у меня не было опыта работы под линём с такими жирными файлами. но мапирование там есть.

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

Сообщение отредактировал BRE - 19.12.2011, 9:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 19.12.2011, 12:18
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(BRE @ 19.12.2011, 9:43) *
...
и прекрасно работает. :)


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

Сообщение отредактировал wiz29 - 19.12.2011, 12:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
B_u_R_n
  опции профиля:
сообщение 19.12.2011, 13:17
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 6.12.2011
Пользователь №: 3048

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(wiz29 @ 19.12.2011, 13:18) *
Цитата(BRE @ 19.12.2011, 9:43) *
...
и прекрасно работает. :)


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

что вы подразумеваете под мапить ?
MapViewOfFile(...);
если да то хз как обрезать в нем \n и сформировать массив строк
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 19.12.2011, 13:48
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(wiz29 @ 19.12.2011, 13:18) *
При высокой нагрузке на изменения положения маппированного куска, в 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, 16:17) *
если да то хз как обрезать в нем \n и сформировать массив строк

это зависит от структуры твоего файла. как сам сделаешь - так и будет. он тебе мапит кусок файла на область памяти. формат файлов - дело личное.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
B_u_R_n
  опции профиля:
сообщение 19.12.2011, 15:39
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 6.12.2011
Пользователь №: 3048

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Iron Bug @ 19.12.2011, 14:52) *
Цитата(B_u_R_n @ 19.12.2011, 16:17) *
если да то хз как обрезать в нем \n и сформировать массив строк

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

ну я о том что не перегонять же весь массив в массив указателей на строки
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 20.12.2011, 6:02
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


B_u_R_n, если душа того велит, можно и перегнать ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 17:06