Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Загрузить большой файл в память |
Автор: yorc 27.12.2009, 01:02 |
привет всем! сразу извиняюсь - уже создал похожую тему в разделе Perl, но потом понял, что проблема моя более общая задача моя состоит в том, чтобы загрузить большой (>100 Мб) текстовый файл в память, а потом просто пользоваться им из Perl-кода работаю под FreeBSD 6.3 подскажите, пожалуйста, как можно это организовать, чтобы не загружать его при каждом вызове интерпретатора? ещё раз просьба к модерам: не удаляйте! похожая тема есть, но там несколько другой контекст спасибо! |
Автор: andrew_121 27.12.2009, 04:34 |
Тут была похожая проблема. Решили. Но как этот код привязать к перл, хз. http://forum.vingrad.ru/index.php?showtopic=268273&view=findpost&p=1935034 |
Автор: MAKCim 27.12.2009, 11:39 | ||
в режиме read-only можно его скопировать в экземпляр ramfs и юзать оттуда
|
Автор: yorc 8.1.2010, 13:59 |
MAKCim: спасибо за блестящую идею! у меня фрибсд, поэтому попытался использовать не RamFS, а MDCONFIG. однако у меня VDS, и хостеры чёрным по белому написали, что пользование командой mount запрещено... :( есть ещё мысли насчёт memcached, но она ведь совсем для других целей создавалась! мне нужно 1 раз в день, допустим, потратить 2-3 минуты на загрузку файла в оперативку, а потом просто получать к нему доступ из Perl-интерпретатора, не тратя время на ожидание! есть ещё хоть какие-нибудь идеи, как это можно сделать? |
Автор: MAKCim 8.1.2010, 15:01 |
можно через mmap + MAP_POPULATE + MAP_LOCKED если FreeBSD не поддерживает эти флаги, можно заюзать mmap + ручной read-ahead + mlock mlock соответствует POSIX.1-2001, так что должен быть во FreeBSD |
Автор: yorc 13.1.2010, 13:27 |
решил проблему установкой Redis-сервера всем спасибо! |