Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Oberon
Перезагрузить страницу Выявленные факты о BlackBox не компилируется память
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию Выявленные факты о BlackBox не компилируется память - 17.01.2005, 12:25

Хочу подвести итог исследований эффективности работы BlackBox обсуждавшихся там:
http://www.rsdn.ru/Forum/Message.aspx?mid=...d=895592&only=1
http://www.rsdn.ru/Forum/Message.aspx?mid=...d=899740&only=1

Выявленные факты о BlackBox:
1) Не отдает память обратно в Windows
2) Не компактифицирует память.
3) Не ранжирует объекты по поколениям при сборке мусора.

Следствия:
1) То что BlackBox не отдает память обратно в Windows с одной стороны плохо (для других приложений), но с другой стороны хорошо, так как позволяет сборщику мусора работать в несколько раз быстрее (в среднем в 3 раза) чем, например, сборщик мусора в Microsoft .NET.

2) Если однажды BlackBox-у понадобилось слишком много памяти (размер превысил размер оперативной памяти и был использован жесткий диск - работа с которым идет сильно медленнее), то после того как такое количество памяти стало более не нужным, то скорость работы BlackBox-а оказывается вовсе не увеличивается!!! Он продолжает удерживать за собой все сонмище однажды захваченной памяти включая ее куски на жестком диске, и, по всей видимости, периодически работает с ней всей, включая куски на жестком диске, а это очень медленно. То есть стоит всего лишь один раз BlackBox-у "попасть на жесткий диск" так все - пиши пропало, сам он с жесткого диска уйти не в состоянии, единственное решение - перезапуск BlackBox-а. В то же время, .NET программа легко уходит с жесткого диска (после того как память стала более не нужна) и работает далее как ни в чем не бывало.

3) Если есть огромное количество (5 миллионов) фоновых объектов существующих на протяжении всей работы программы и есть небольшое количество (всего 1 тысяча) то и дело создаваемых и удаляемых объектов, то сборщик мусора работает очень медленно при каждом своем запуске он обрабатывает вовсе не 1 тысячу объектов, а все-все объекты, т.е. 5 миллионов + 1 тысяча. Это в то время как, например, сборщик мусора в Microsoft .NET отправляет те фоновые 5 миллионов объектов с следующее поколение и работает только с 1 тысячей динамических объектов, то есть скорость работы в тысячу раз быстрее (секунды работы .NET против нескольких часов работы BlackBox). Хотя, конечно, справедливости ради, надо заметить, что если бы те 5 миллионов объектов тоже то и дело создавались/удалялись (то есть не были бы фоновыми), то тогда BlackBox работал бы как минимум в 2-3 раза быстрее .NET

Выводы:
BlackBox эффективно работает только если есть очень большое количество оперативной памяти и если нет большого количества фоновых объектов.
Ответить с цитированием
  (#2 (permalink)) Старый
S.Yu.Gubanov S.Yu.Gubanov вне форума
Member
 
Сообщений: 587
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.12.2002
По умолчанию 18.01.2005, 11:51

Позволю себе процитировать совет данный уважаемым info21 ( http://www.delphikingdom.com/asp/talktopic.asp?ID=339 ) по поводу того как предотвратить "залетание" BlackBox-а на жесткий диск:
Цитата:
...перепроектировать свои большие структуры данных так, чтобы хранить "лишнее" на диске и подкачивать нужные данные в память не полагаясь на системный механизм виртуальной памяти, а с помощью алгоритма, использующего специфику задачи.

Это требует внимательного проектирования на раннем этапе, но не должно быть сложно. Видимо, дело сведется к упрощению структур данных (последовательный доступ вместо хитроумных деревьев и т.п.).
Ответить с цитированием
  (#3 (permalink)) Старый
Trurl Trurl вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.08.2004
По умолчанию 20.01.2005, 15:01

По поводу 2) и 3).
Копирующие сборщики мусора хороши для систем с виртуальной памятью. Но они не лишены недостатков. Обычный копирующий сборщик потребляет в 2 раза больше памяти, чем требуется. Ранжирование по поколениям - эвристика, хорошо работающая в большинстве случаев, но в худшем приводит к еще большим потерям.
Ответить с цитированием
  (#4 (permalink)) Старый
info21 info21 вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.01.2005
По умолчанию 24.01.2005, 12:16

По поводу ранжирования по поколениям:

Если сильно надо держать на куче 5М объектов, и чтобы сборщик мусора по ним не лазил, можно заякорить их через указатель(и) с атрибутом [untagged].
Ответить с цитированием
  (#5 (permalink)) Старый
info21 info21 вне форума
Новичок
 
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.01.2005
По умолчанию 24.01.2005, 12:20

Кстати, компактифицирующий сборщик мусора по идее можно добавить в ББ (раз уж исходники есть) просто как дополнительную процедуру в Kernel/Services.
В качестве первого шага.
А потом уже думать про комбинированную стратегию сбора мусора для специальных приложений.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не компилируется написанная программа Boris_K C++ Builder 3 25.05.2011 23:02
Удалить дублирующиеся факты с выводом соответствующих сообщений. FireWingS Prolog 1 18.06.2010 09:30
Написанная программа на С++ не компилируется Evgenijj Visual C++ 4 13.06.2009 22:32
Массивы, матрицы и факты (VIP) Passeriformes Prolog 6 16.10.2006 17:25
Задача на Прологе. Почти решил но не компилируется. HARM Prolog 2 15.06.2006 12:48
Компонент TPngImage не компилируется BOO C++ Builder 8 13.04.2006 16:20
Минимальная программа на BlackBox sacred1972 Oberon 1 17.11.2005 13:58
Почему не компилируется грацический проект Виноград Вопросы начинающих программистов 5 28.04.2005 07:34
Как получить BlackBox PROnya Oberon 12 22.02.2005 07:21
Почему в Visual C++ не компилируется программа с printf Anonymous Вопросы начинающих программистов 3 21.06.2004 09:17
Почему не компилируется код char new_path Anonymous Visual C++ 4 18.04.2003 13:24



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов