Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение в память больших файлов 
:(
    Опции темы
temr
Дата 18.9.2012, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



Добрый день,
посоветуйте способ быстрого чтения в память фала размером в 1 gb
желательно чтобы модzhnо было читать определенную часть файла
Всем спасибо 
PM MAIL   Вверх
feodorv
Дата 18.9.2012, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Memory map?
mmap на юниксе и CreateFileMapping/MapViewOfFile в виндах...




--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
temr
Дата 19.9.2012, 06:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



Спасибо поробую
PM MAIL   Вверх
Randajad
Дата 19.9.2012, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



В бусте все это есть и кроссплатформенно.
А чем MMap быстрее malloc + fread? Если автору нужен не весь файл, а только часть, то именно f* функции нужны. Потому что MMap пытается зарезервировать для процесса памяти столько, каков размер файла. И при 512 MB озу и отключенном свопе, файл даже в 0.5 гига просто не замапится. Функция вернет ошибку.

Это сообщение отредактировал(а) Randajad - 19.9.2012, 08:07
PM MAIL   Вверх
feodorv
Дата 19.9.2012, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(Randajad @  19.9.2012,  09:05 Найти цитируемый пост)
А чем MMap быстрее malloc + fread?

Хороший вопрос.
Я полагаю, из-за отсутствия необходимости копирования данных файла из системной области в пользовательскую. Плюс ОС всегда оптимизируется для работы со страницами памяти.
В реальности нужно сравнивать производительности для конкретной задачи.


Цитата(Randajad @  19.9.2012,  09:05 Найти цитируемый пост)
при 512 MB озу и отключенном свопе, файл даже в 0.5 гига просто не замапится

Я надеюсь, что такого не случиться)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
bems
Дата 20.9.2012, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Цитата(Randajad @  19.9.2012,  08:05 Найти цитируемый пост)
И при 512 MB озу и отключенном свопе, файл даже в 0.5 гига просто не замапится
не знаю что в этих ваших линуксах, а в винде замаппится. "Свопом" для нового memory mapped file будет сам этот файл. А вот непрерывного гектара виртуальных страниц под х86-32 может и не найтись


Это сообщение отредактировал(а) bems - 20.9.2012, 03:53


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Randajad
Дата 20.9.2012, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 15.3.2012

Репутация: 8
Всего: 8



На хрюше у меня упорно отказывалось маппиться. На висте и выше не тестил.
PM MAIL   Вверх
bems
Дата 20.9.2012, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



только что на семёрке под х64 замаппил 32Г на компе с 16Г оперативы и отключенным свопом
должно работать и под ХР если есть подходящий регион виртуальной памяти


--------------------
Обижено школьников: 8
PM MAIL   Вверх
xvr
Дата 20.9.2012, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Randajad @  20.9.2012,  06:49 Найти цитируемый пост)
На хрюше у меня упорно отказывалось маппиться.

Должно замэпится, если найдется свободный непрерывный кусок адресов виртульной памяти необходимого размера. На 32х битной системе может 0.5Г непрерывного участка и не найтись.

PM MAIL   Вверх
baldina
Дата 20.9.2012, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(Randajad @  19.9.2012,  08:05 Найти цитируемый пост)
Потому что MMap пытается зарезервировать для процесса памяти столько, каков размер файла.

MMap пытается зарезервировать для процесса памяти столько, каков размер указанного окна. А дальше - как xvr сказал.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0749 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.