OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 16 Октябрь, 2024 04:01

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




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: Четверг, 11 Июль, 2024 03:35 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1450
Sergej Durmanov писал(а):
В фоксе сейчас нет оптимизации.
O_O

спасибо вам, великие Боги Электричества, за то, что помешали мне заняться вытаскиванием его в стандалон-систему. узнавание сего факта после было бы моим личным разочарованием века. я-то — глядя на его жирность — думал что он… а он… эх! (гифка с машущим рукой Тиллем)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июль, 2024 06:13 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 304
Откуда: Russia
так и в компиляторе от бб тоже ее нет. а примитивная и в фоксе есть, но я это не считаю.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июль, 2024 11:27 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1450
Sergej Durmanov писал(а):
так и в компиляторе от бб тоже ее нет. а примитивная и в фоксе есть, но я это не считаю.
так в том-то и дело: я думал, фокс намного круче умеет. я когда бегло смотрел — вроде бы призрак SSA там видел (но утверждать не стану, смотрел реально одним глазом прищурась). а если есть SSA — то грешно на нём пассы оптимизаций не погонять, и хотя бы обратный аллокатор не пустить.

я, конечно, это не в претензию: нет — и нет, CP2 вон и так нормально справляется. жаль просто, что нет — украсть негде. ;-)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июль, 2024 16:12 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 304
Откуда: Russia
Fox и разрабатывался стприцелом на ssa - архитектура так выстроена. Нот модуля ssa в репозитории нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июль, 2024 16:45 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1450
хучь срочно допиливай нужные части OberonJIT, чтобы погонять.

алсо, посмотрел на код — а ему реально надо так адово аллокатить? это уже чуть ли не тест GC получается.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июль, 2024 18:40 

Зарегистрирован: Вторник, 12 Март, 2024 20:31
Сообщения: 25
Во-первых, см. приписку про пианиста. Я ни в коем случае не программист и не претендую. Во-вторых, формально, несмотря на неоптимальность реализации, тут наблюдается соответствие заявленной теме
Wlad писал(а):
Ну, тогда - сам Дейкстра велел подобрать и оформить аналогичные семантические случаи и протестировать-сравнить


В-третьих, буду рад конструктивным предложениям. Правда, они будут выходом за рамки темы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июль, 2024 19:39 

Зарегистрирован: Вторник, 12 Март, 2024 20:31
Сообщения: 25
Хм. Я, оказывается, неправильно использовал Джулию. Переделал реализацию, спрятав всю программу из глобальной области в функцию run(). Загрузил программу через include в интерпретаторе. Запустил оттуда функцию run(). Замерил скорость работы на втором пуске (в течение первого пуска идёт компиляция). Теперь Джулия намного опережает все остальные реализации
Код:
360 s with heating:
Ofront+                     00m31.743s
Ofront+, -O0                00m47.332s
Ofront+, IRK                00m16.556s
Ofront+, IRK, -O0           00m23.680s
BlackBox                    01m01.397s
BlackBox, IRK               00m27.656s
A2                          01m29.138s
Python                      62m00.986s
Julia,DP5                   00m11.318s
Julia,Tsit5                 00m11.053s
Julia,
 AutoTsit5(Rosenbrock23())  00m00.100s

360 s without heating:
Ofront+                     00m01.366s
Ofront+, -O0                00m02.079s
BlackBox                    00m02.923s
A2                          00m04.145s
Python                      02m28.379s
Python,solve_ivp            02m27.186s
Julia,DP5                   00m01.320s
Julia,Tsit5                 00m01.227s
Julia,
 AutoTsit5(Rosenbrock23())  00m00.040s


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июль, 2024 22:36 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1450
я код не анализировал, просто быстроглянул — и увидел локальные аллокаторы. в большинстве случаев это значит, что память разбрасывают как отряд сеятелей. NEW очень дешёвый, GC очень дорогой.

а если говорить про семантику — то преобразования, использующие пул буферов, например (или вообще флип-флоп между двумя наборами статических буферов), дадут семантически эквивалентную программу, но вполне вероятно более быструю. можно ли это сделать в данном коде — я не знаю, и у меня пока нет возможности его проанализировать.

это одна из причин, по которым я считаю бенчмарки бесполезными, кстати: в большинстве случаев пишется некий «общий» код, который очень плохо заточен под конкретную среду/язык. в итоге выигрывает обычно та, для которой код наиболее «идиоматичен» и попадает в нужные паттерны оптимизации. то есть, бенчмарк говорит, насколько плохо нечто справляется с плохим кодом. как по мне — не самая полезная информация. ;-)

это всё не в упрёк автору темы, прошу прощения. просто бурчу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 26 Июль, 2024 22:18 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1450
по ходу, всё это можно ускорить минимум в два раза, если использовать статические массивы, а не динамические. с динамическми у меня BBCB отрабатывает за ~30 секунд, а со статическими — за ~13. только не забыть IN/VAR/OUT порасставлять где надо, чтобы лишних копирований не было.

p.s.: замечу касательно темы: оберон не пытается умничать. предполагается, что алгоритм оптимизирует программист, а компилятор поёт то, что ему дали. не пытаясь проводить какие-то трансформации кода сложнее constant folding. с одной стороны это требует больше усилий для написания эффективного кода, зато с другой — компилятор очень быстрый (что важно в итеративном подходе), и можно быть более-менее уверенным, что он (компилятор) не перепишет валидный код в какой-то бред, потому что кто-то где-то решил, что так можно. (привет, сишечка-со-стандартами!) вот мы разгрузили GC и убрали бесконечные проверки на NIL — и код сразу ускорился в два раза вообще без изменения алгоритмов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 28 Июль, 2024 15:25 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1450
кстати, на оригинальном BBCB со статическими массивами ещё быстрее будет. я-то проверял на LC, а там у меня включено насильственное зануление всех локалов, включая массивы без указателей. в оригинале эта опция выключена, так что будет секунды на полторы-две быстрей, думаю.


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

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


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

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


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

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