Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб июн 23, 2018 21:38

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: о использовании памяти
СообщениеДобавлено: Ср мар 02, 2011 18:40 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Это плата за возможность гибкого использования обоих стеков. :twisted:
А ALLOCATE в форке делает вызов RtlAllocateHeap, и это очень медленно, так ведь?
Кстати, есть ли в SPF или форке удобный механизм финализации (освобождать выделенную память, закрывать файлы) на случай нелокального выхода по THROW?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: вариант реализации watchdog механизма
СообщениеДобавлено: Ср мар 02, 2011 19:03 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
dynamic-wind писал(а):
А ALLOCATE в форке делает вызов RtlAllocateHeap, и это очень медленно, так ведь?

HeapAlloc из kernel32.dll
не знаю на сколько быстро, вроде не слишком медленно, к тому же основные тормоза не с выделением памяти, а с ресайзом ее.

dynamic-wind писал(а):
Кстати, есть ли в SPF или форке удобный механизм финализации (освобождать выделенную память, закрывать файлы) на случай нелокального выхода по THROW?

есть механизм ON-ERROR - EXIT-ERROR, который позволяет решать аналогичные задачи.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: вариант реализации watchdog механизма
СообщениеДобавлено: Чт мар 03, 2011 17:38 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
mOleg писал(а):
HeapAlloc из kernel32.dllне знаю на сколько быстро, вроде не слишком медленно, к тому же основные тормоза не с выделением памяти, а с ресайзом ее.

Все относительно. На самом деле аллокирование медленная вещь(тысячи тиков Timer Stamp Counter) и сильно зависит от объема выделяемой памяти. При больших объемах памяти разницы между быстродействием, например, операций FREE и RESIZE нет.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: вариант реализации watchdog механизма
СообщениеДобавлено: Пт мар 04, 2011 17:25 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
chess писал(а):
На самом деле аллокирование медленная вещь(тысячи тиков Timer Stamp Counter) и сильно зависит от объема выделяемой памяти.

Подумалось по этому поводу следующее. Для очень большого количества задач, в которых нужно выделять память под единственный массив (потом она будет не нужна) можно написать свой набор быстрых процедур работы с памятью, аналогичных ALLOCATE, FREE, RESIZE только не в хипе, а в стат. области( для этого нужно увеличить размер образа форт-системы и выделить область для памяти данных). В этом случае все будет очень быстро.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: вариант реализации watchdog механизма
СообщениеДобавлено: Пт мар 04, 2011 17:56 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
chess писал(а):
Подумалось по этому поводу следующее. Для очень большого количества задач, в которых нужно выделять память под единственный массив (потом она будет не нужна) можно написать свой набор быстрых процедур работы с памятью, аналогичных ALLOCATE, FREE, RESIZE только не в хипе, а в стат. области( для этого нужно увеличить размер образа форт-системы и выделить область для памяти данных). В этом случае все будет очень быстро.

вряд ли.
Дело ведь еще и в том, что память РЕАЛЬНО выделяется только в момент записи в нее, причем, происходит это постранично (на сколько я знаю). Кроме того, перед этим память может освобождаться(выкидываться содержимое в своп) и кроме того обнуляться (борьба за конфиденциальность). Зачем делать работу за операционную систему, если ее всеравно будет выполнять ОС?
Для ускорения процесса выделения можно уже использованную память связывать хоть в односвязный, хоть в хешированный, хоть в бинарный список (сортируя, так сказать по объему блока) и потому при необходимости быстро отдавать адрес из этого списка. Хотя и это не гарантирует от того, что эта память не окажется в свопе...

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: вариант реализации watchdog механизма
СообщениеДобавлено: Пт мар 04, 2011 21:53 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
mOleg писал(а):
вряд ли.

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

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: вариант реализации watchdog механизма
СообщениеДобавлено: Пт мар 04, 2011 23:13 
В сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6333
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
chess писал(а):
Все что вы здесь написали относится к динамической памяти, я же писал о статической памяти.

Только не динамическая и статическая (это разновидности микросхем), а динамически выделяемая и статически выделяемая.
chess писал(а):
Статическая память выделяется еще до начала работы программы, на стадии компиляции и сборки.

Кварк выделяет 256 Мб статически. В диспетчере задач виден существенно меньший размер занимаемой этим процессом памяти, который увеличивается блоками, в процессе действительного доступа к каким-то адресам. Память выделяется не в физическом адресном пространстве, а в логическом, а дальше работает механизм трансляции страниц.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: вариант реализации watchdog механизма
СообщениеДобавлено: Сб мар 05, 2011 17:29 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
Хищник писал(а):
Только не динамическая и статическая (это разновидности микросхем), а динамически выделяемая и статически выделяемая.

Это сокращения и только.

Конечно есть ОЗУ и память только в этом ОЗУ и нигде более, но есть ОС, которая, да, работает
с памятью по своим правилам, которые не перепрыгнуть в рамках приложения этой ОС, которым и является Форт. Но тем не менее работа со стат. памятью гораздо шустрее чем с динамической.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: вариант реализации watchdog механизма
СообщениеДобавлено: Сб мар 05, 2011 19:28 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
chess писал(а):
Но тем не менее работа со стат. памятью гораздо шустрее чем с динамической.

Неудивительно :D Ведь работа со динамически выделяемой памятью требует хоть одну команду потратить на получение указателя, а дальше--всё как со статической. :arrow: :arrow: :arrow:
Динамическое выделение может быть эффективнее статичекого только тогда, когда объект создается в одном месте программы на время, а потом он не нужен, зато нужен другой объект в другом месте. Тогда может быть экономия от уменьшения рабочего набора, от повторных обращений к закешированной памяти и т.п. Ели эта экономия амортизирует затраты на динамическое управление--тогда да.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB