OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 31 Май, 2020 02:33

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




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Вторник, 05 Май, 2020 13:26 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 235
Comdiv писал(а):
У меня, кстати, на примере транслятора получилось на 32-битной системе как раз на 42% меньше.

А расскажите подробнее, пож


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Май, 2020 21:11 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 248
Откуда: Austria, Bruck
adimetrius писал(а):
То есть, допустим, есть у нас 64-битный компилятор КП; он генерирует нативные 64-битные инструкции. И есть у него два режима: жадный и скупой: в жадном указатели 64-битные, а в скупом - 32-битные?
И выходит, что можно по желанию одну и ту же программу скомпилировать и жадно, и скупо.

Отлично сформулировано. Но только для Оберон-2(07) сработает.
Для КП\ЧЯ тут проблемы возникают: поскольку параметры компиляции для каждого модуля могут быть различны, то в среде всегда будет часть модулей "скупых" и часть "жадных" что требует: а) согласование вызовов процедур с аргументами-указателями; б) нужно будет два согласованных сборщика мусора.
(Кстати, мне теперь больше понятна реакция Info21 и И.Е. - они смотрят только в ЧЯ)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Май, 2020 21:20 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2748
Моё наивное видение проблемы. Надо сделать какую-то гибридную систему кучи из холма и горы. В холме хранятся только указатели, а данные этих указателей отдельно вне холма в большой горе. По данным в горе сборщик вообще не бегает. А проверяет только холм. И если из холма объект удаляется, то и из горы ему соответствующие данные удаляются.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Май, 2020 22:08 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 235
hothing писал(а):
Отлично сформулировано. Но только для Оберон-2(07) сработает.
Для КП\ЧЯ тут проблемы возникают: поскольку параметры компиляции для каждого модуля могут быть различны, то в среде всегда будет часть модулей "скупых" и часть "жадных" что требует: а) согласование вызовов процедур с аргументами-указателями; б) нужно будет два согласованных сборщика мусора.

Ну, я так далеко не мыслил: вы описываете гибридную систему, в которой одновременно сосуществуют жадные и скупые указатели. А можно ж иметь целиком жадную систему или целиком скупую. Если, скажем, я делаю для заказчика систему с заведомо небольшими требованиями по памяти, то могу собрать для него скупую систему; иначе - жадную.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Май, 2020 01:02 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1083
Откуда: Киев
adimetrius писал(а):
Comdiv писал(а):
У меня, кстати, на примере транслятора получилось на 32-битной системе как раз на 42% меньше.
А расскажите подробнее, пож
Добавил в транслятор вывод кол-ва использованной динамической памяти при использовании с простейшим распределителем памяти без освобождения, и собрал его в 64- и 32-битных режимах. Расходы памяти при трансляции самого себя отличались на 42%. Попробовал, также, собрать в 64-битном режиме с упакованными структурами и без выравнивания выделяемых блоков. Разница с обычным составила 25%.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Май, 2020 18:56 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 235
Очень любопытно!
Comdiv писал(а):
Добавил в транслятор вывод кол-ва использованной динамической памяти при использовании с простейшим распределителем памяти без освобождения, и собрал его в 64- и 32-битных режимах. Расходы памяти при трансляции самого себя отличались на 42%. Попробовал, также, собрать в 64-битном режиме с упакованными структурами и без выравнивания выделяемых блоков. Разница с обычным составила 25%.


Оч интересный результат! Не подберу только название к нему: получается, это не максимальный объем памяти, используемый при компиляции (некоего стандартного теста, коим служит здесь сам компилятор), а как бы объем памяти, который бы понадобился, если бы динамические переменные были неудалимыми. так?
А сборка в 32 и 64 - это Оберон->C->машкод? Т.е. саму сборку посторонние инструменты осуществляют, а не ваш?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 06 Май, 2020 22:10 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1083
Откуда: Киев
adimetrius писал(а):
а как бы объем памяти, который бы понадобился, если бы динамические переменные были неудалимыми. так?
Да. Это, также, приблизительно соответствует использованию сборщика мусора, так как при непродолжительном выполнении он тоже не будет освобождать память.

adimetrius писал(а):
А сборка в 32 и 64 - это Оберон->C->машкод? Т.е. саму сборку посторонние инструменты осуществляют, а не ваш?
Верно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2

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


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB