Мне очень стыдно, я только недавно узнал об этой технологии. Поковырялся немножко в доках - понравилось. Классно лазить по файлу, как в памяти, а оно там само читается/кэшируется/подкачивается... Но возникло несколько вопросов:
1. Понятно, что если нужен произвольный доступ к файлу, маппинг вне конкуренции. Но если мне нужно просто последовательный проход и скорость критична - стоит ли оно того?
2. Правильно ли я понял, что таким макаром файл можно только читать, запись не работает?
3. Что будет, если я замаплю файл мегабайт эдак на 300-500? Скорость, опять-таки критична.
4. Вообще, какие есть подводные камни?
Само – это далеко не всегда классно. ... Думаешь, что если вместо тебя сикать будет Винда, то винт станет быстрее?
В общем случае - безусловно. Но если оно избавляет от решения нетривиальной и трудоемкой задачи ценой (цифра от фонаря) 5%-ой потери производительности - это неплохо.
_SGK писал(а):
А ты попробуй разные варианты, сам все и увидишь.
Пробовать конечно надо, но у меня такая мыслЯ - все равно от посредничества ОС не избавиться, так может и не нужно с ним бороться, а лучше использовать во благо? Как ни ругают Билли, Винду все же не идиоты писали.
_SGK писал(а):
do[mini]k писал(а): 2. Правильно ли я понял, что таким макаром файл можно только читать, запись не работает? Неправильно.
Я не вполне точно выразился, речь шла о ДОзаписи, т.е. изменении размера файла.
Serg Temnov Если на пальцах, то файл "отображается" на некую область оперативной памяти, и с ним можно работать как с обычным массивом. А все функции работы с диском ОС берет на себя и делает это в фоне.
Мне вот рассказали, что у NT-систем это "родной" способ отрытия файлов - в частности, экзешники при запуске именно мапятся в память.
На не кэшированном файле преимуществу взяться неоткуда, винту нужно физически считать данные, а на кэшированном при правильном подходе будет использован дисковый кэш ОС.
do[mini]k писал(а):
Но если оно избавляет от решения нетривиальной и трудоемкой задачи
Это только так кажется, ИМХО.
do[mini]k писал(а):
Как ни ругают Билли, Винду все же не идиоты писали.
Так вопрос никто и не ставил, все просто несколько сложнее. Данный подход (файлы отображенные в память) имеет несколько сфер применения. 1. Загрузка и выполнение *.dll & *.exe файлов. 2. Разделение данных среди разных процессов. 3. Доступ к файлам.
do[mini]k писал(а):
Я не вполне точно выразился, речь шла о ДОзаписи, т.е. изменении размера файла.
Можешь.
do[mini]k писал(а):
Если на пальцах, то файл "отображается" на некую область оперативной памяти
Я даже не думаю, а просто точно знаю, что стОит попробовать несколько вариантов и выбрать из них наиболее подходящий для твоей конкретной задачи.
Ну потратишь ты энное количество своего драгоценного времени, зато получишь результат и заметь не "на пальцах" типа Саня или Ваня сказал...
Если на пальцах, то файл "отображается" на некую область оперативной памяти
. Бред. Отображаение происходит на виртуальное адресное пространство процесса, которое может намного превосходить размер физической памяти. Добавлено спустя 3 минуты, 59 секунд
GReY писал(а):
AFAIK оно просто удобно, преимуществ в скорости не даст.
. Бред второй! Памминг позволяет указать дескриптор доступа к файлу так, что только разработчик может к нему обращаться, что позволяет избежать физическое копирование файла, как информации, с последующим дизассемблированием. Читайте умные книжки, мусье.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения