Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проецирование файлов в память, Для поиска в этих файлах 
:(
    Опции темы
Georg4
Дата 16.7.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я, друзья мои, не сталкивался с этим раньше, а вот подумал, что так будет проще и быстрее делать поиск.

Всё дело в том, что производится поиск строки по заданным параметрам, по одним и тем же файлам (количеством где-то 80 и объемом около 100 мб).

Соответственно, я подумал, записать при первом поиске или при выборе папки с этими файлами их всех в память оперативную, и оттуда уже их легче, по времени, пользовать.

Не могу найти нужной документации по этому поводу.

Если кто делал такиу вещь, дайте совет или мануал подходящий


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


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



мануал тут один -- MSDN. см. CreateFileMapping и дальше:
http://msdn2.microsoft.com/EN-US/library/aa366781.aspx


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
MetalFan
Дата 16.7.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


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

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



Цитата(Georg4 @  16.7.2007,  18:56 Найти цитируемый пост)
при выборе папки с этими файлами их всех в память оперативную

не есть эта мысль удачная. память оперативная - не презерватив)
отображать необходимо тот кусок, с которым будет вестись работа...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
W4FhLF
Дата 17.7.2007, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Небольшой пример.

Код

var
hFile, hMap, fSize: dword;
pMemory: pointer;
begin
  hFile := CreateFile(Path, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
  fSize := GetFileSize(hFile,0);
  hMap := CreateFileMapping(hFile, nil, PAGE_READWRITE, 0, 0, nil);
  pMemory := MapViewOfFile(hMap, FILE_MAP_WRITE + FILE_MAP_READ, 0, 0, 0);
.........
  UnmapViewOfFile(pMemory);
  CloseHandle(hMap);
  CloseHandle(hFile);



Цитата(MetalFan @  16.7.2007,  21:40 Найти цитируемый пост)
не есть эта мысль удачная. память оперативная - не презерватив)


Если в случае MMF, то данные в оперативку не отображаются, они находятся в свопе. 



--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Georg4
Дата 17.7.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

не есть эта мысль удачная. память оперативная - не презерватив)


Так ведь со всеми файлами в папке и будет работа вестись....
Просто будет по этой кнопке выбора пути файлы одновременно проецироваться (а перед этим, на той же кнопке, сделать освобождение памяти от предыдущих файлов если они были), потом по поиску будет оттуда искаться и уже при выходе память освобождается



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


Эксперт
****


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

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



Цитата(W4FhLF @  17.7.2007,  07:29 Найти цитируемый пост)
Если в случае MMF, то данные в оперативку не отображаются, они находятся в свопе. 
 В этом примере
Цитата(W4FhLF @  17.7.2007,  07:29 Найти цитируемый пост)
pMemory := MapViewOfFile(hMap, FILE_MAP_WRITE + FILE_MAP_READ, 0, 0, 0);

своп задействован не будет, потому что FILE_MAP_WRITE + FILE_MAP_READ даст "простое" проецирование файла данных на виртуальную память (оператива тут вообще причем? ну кроме внутренних буферов). А своп используется только если ты заказываешь копирование при записи



--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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