Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 11 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 10.01.2005
Мне очень стыдно, я только недавно узнал об этой технологии. Поковырялся немножко в доках - понравилось. Классно лазить по файлу, как в памяти, а оно там само читается/кэшируется/подкачивается... Но возникло несколько вопросов:
1. Понятно, что если нужен произвольный доступ к файлу, маппинг вне конкуренции. Но если мне нужно просто последовательный проход и скорость критична - стоит ли оно того?
2. Правильно ли я понял, что таким макаром файл можно только читать, запись не работает?
3. Что будет, если я замаплю файл мегабайт эдак на 300-500? Скорость, опять-таки критична.
4. Вообще, какие есть подводные камни?



Партнер
 

Member
Статус: Не в сети
Регистрация: 05.01.2005
do[mini]k
do[mini]k писал(а):
Классно лазить по файлу, как в памяти, а оно там само читается/кэшируется/подкачивается...

Само – это далеко не всегда классно. ;)

do[mini]k писал(а):
1. Понятно, что если нужен произвольный доступ к файлу, маппинг вне конкуренции.

Думаешь, что если вместо тебя сикать будет Винда, то винт станет быстрее? :)

do[mini]k писал(а):
Но если мне нужно просто последовательный проход и скорость критична - стоит ли оно того?

Хороший вопрос. :)
А ты попробуй разные варианты, сам все и увидишь.

do[mini]k писал(а):
2. Правильно ли я понял, что таким макаром файл можно только читать, запись не работает?

Неправильно.

do[mini]k писал(а):
3. Что будет, если я замаплю файл мегабайт эдак на 300-500?

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

do[mini]k писал(а):
4. Вообще, какие есть подводные камни?

Из известных :) - глюки при реализации (кодировании).


 

Member
Статус: Не в сети
Регистрация: 10.01.2005
Спасибо, поумничал ты хорошо :) Ну а по существу?
_SGK писал(а):
Само – это далеко не всегда классно.
...
Думаешь, что если вместо тебя сикать будет Винда, то винт станет быстрее?

В общем случае - безусловно. Но если оно избавляет от решения нетривиальной и трудоемкой задачи ценой (цифра от фонаря) 5%-ой потери производительности - это неплохо.
_SGK писал(а):
А ты попробуй разные варианты, сам все и увидишь.

Пробовать конечно надо, но у меня такая мыслЯ - все равно от посредничества ОС не избавиться, так может и не нужно с ним бороться, а лучше использовать во благо? Как ни ругают Билли, Винду все же не идиоты писали. :)
_SGK писал(а):
do[mini]k писал(а): 2. Правильно ли я понял, что таким макаром файл можно только читать, запись не работает?
Неправильно.

Я не вполне точно выразился, речь шла о ДОзаписи, т.е. изменении размера файла.


 

Member
Статус: Не в сети
Регистрация: 07.05.2004
Откуда: Санкт-Петербург
объясните плс, что такое маппинг файлов.


 

Advanced member
Статус: Не в сети
Регистрация: 13.04.2003
Откуда: Салават
Serg Temnov
memory mapped files
Добавлено спустя 6 минут, 50 секунд
do[mini]k
AFAIK оно просто удобно, преимуществ в скорости не даст.

_SGK
Поправь, если я ошибаюсь.

_________________
О браузерах без субъективизма http://people.overclockers.ru/GReY/16906/Obektivnyj_test_brauzerov


 

Member
Статус: Не в сети
Регистрация: 10.01.2005
Serg Temnov
Если на пальцах, то файл "отображается" на некую область оперативной памяти, и с ним можно работать как с обычным массивом. А все функции работы с диском ОС берет на себя и делает это в фоне.

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


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
do[mini]k
do[mini]k писал(а):
Спасибо, поумничал ты хорошо

Нима за шо :), так и знал, что ты гадость скажешь. :D

do[mini]k писал(а):
Ну а по существу?

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

do[mini]k писал(а):
Но если оно избавляет от решения нетривиальной и трудоемкой задачи

Это только так кажется, ИМХО.

do[mini]k писал(а):
Как ни ругают Билли, Винду все же не идиоты писали.

Так вопрос никто и не ставил, все просто несколько сложнее.
Данный подход (файлы отображенные в память) имеет несколько сфер применения. :)
1. Загрузка и выполнение *.dll & *.exe файлов.
2. Разделение данных среди разных процессов.
3. Доступ к файлам.

do[mini]k писал(а):
Я не вполне точно выразился, речь шла о ДОзаписи, т.е. изменении размера файла.

Можешь.

do[mini]k писал(а):
Если на пальцах, то файл "отображается" на некую область оперативной памяти

Это как закажешь, можно и не весь файл.


 

Member
Статус: Не в сети
Регистрация: 10.01.2005
А если ваять что-то очень часто изменяющееся (пример - файл профиля Миранды) - стОит?


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
do[mini]k
do[mini]k писал(а):
стОит?

Я даже не думаю, а просто точно знаю, что стОит попробовать несколько вариантов и выбрать из них наиболее подходящий для твоей конкретной задачи.
Ну потратишь ты энное количество своего драгоценного времени, зато получишь результат и заметь не "на пальцах" типа Саня или Ваня сказал... :)


 

do[mini]k писал(а):
Если на пальцах, то файл "отображается" на некую область оперативной памяти
. Бред. Отображаение происходит на виртуальное адресное пространство процесса, которое может намного превосходить размер физической памяти.
Добавлено спустя 3 минуты, 59 секунд
GReY писал(а):
AFAIK оно просто удобно, преимуществ в скорости не даст.
. Бред второй! Памминг позволяет указать дескриптор доступа к файлу так, что только разработчик может к нему обращаться, что позволяет избежать физическое копирование файла, как информации, с последующим дизассемблированием. Читайте умные книжки, мусье.


 

Member
Статус: Не в сети
Регистрация: 10.01.2005
Doors4Raver писал(а):
что позволяет избежать физическое копирование файла, как информации, с последующим дизассемблированием

Сам понял че сказал? :) Читай умные книжки - по русскому языку ;)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 11 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan