OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 18 Апрель, 2024 22:01

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




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Duff's device vs Дейкстра
СообщениеДобавлено: Среда, 06 Май, 2009 16:03 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Рэйлвэй Каген писал(а):
Vlad писал(а):
Вот бы еще на ДРАКОНе кто-нибудь забабахал... Но я подозреваю, что там чуда тоже не будет (будет 7 отдельных веток).
Почему отдельных? Думаю, лесенка видна явно.
Вложение:
2.png


Да! Чудо произошло! :) Дракон рулит! :) Никакого "дублирования", точный аналог оригинального девайса. Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Duff's device vs Дейкстра
СообщениеДобавлено: Среда, 06 Май, 2009 16:20 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Александр Ильин писал(а):
Там изюминка в том, что организован цикл с 8 точками входа. На ассемблере такое допустимо, но стурктурные языки не должны такого допускать, насколько я понимаю. Что же вы подразумевали под "правильной" реализацией, если не "нормальные" структурные циклы? Вот вам решение "по Дейкстре", даже в нескольких вариантах.


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

Да, я согласен, что структурные языки не должны такого допускать. Собственно вся особенность этого примера в завязке на "оптимизацию". Если бы ее не было, то все бы нормально решалось через обычный тривиальный цикл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Duff's device vs Дейкстра
СообщениеДобавлено: Среда, 06 Май, 2009 16:44 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 151
Александр Ильин, Vlad:
Цитата:
..структурные языки не должны такого допускать.
А они и не допускают. Кейс-то в оригинале - дырявый(неструктурный), т.к. брейков нет. Поэтому правильность работы оригинала - демонстрация исключения, а не закономерности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Duff's device vs Дейкстра
СообщениеДобавлено: Пятница, 08 Май, 2009 11:57 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Vlad писал(а):
Собственно вся особенность этого примера в завязке на "оптимизацию".

Именно "оптимизация" и вызывает здесь некоторое сомнение (только сомнение, а не возражение). :roll:
При оптимизации (стандартной) процедуры копирования строк следует стремиться по максимуму использовать пропускную способность шины и читать/писать не байты, а слова. Это важное дополнение к развертке цикла (более важное, чем сама развертка!), сокращающее число обращений к памяти (тогда как управляющая переменная цикла сидит, как правило, в регистре).
В коде Duff's device это не отражено. Возможно, потому что заранее известно, с каким выравниванием распределяется компилятором память.
Второй сомнительный момент касается самого факта развертки. А что если кэш кода маленький?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Duff's device vs Дейкстра
СообщениеДобавлено: Пятница, 08 Май, 2009 16:52 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
AVC писал(а):
Vlad писал(а):
Собственно вся особенность этого примера в завязке на "оптимизацию".

Именно "оптимизация" и вызывает здесь некоторое сомнение (только сомнение, а не возражение). :roll:


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Duff's device vs Дейкстра
СообщениеДобавлено: Воскресенье, 10 Май, 2009 18:09 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
А может, просто это "железо" такое же несерьёзное, как и Си? Может стоит вместо того, чтобы придумывать эффективные программы для неэффективной аппаратуры, сменить аппаратуру?

Подходит, конечно, не всегда, но если подходит, то в итоге - самый быстрый, качественный и дешёвый вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Duff's device vs Дейкстра
СообщениеДобавлено: Воскресенье, 10 Май, 2009 20:56 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Valery Solovey писал(а):
А может, просто это "железо" такое же несерьёзное, как и Си?


У железа свои заморочки, его тоже не боги обжигают ;)


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

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


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

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


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

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