Перейти к содержанию
    

Оптимизация в компиляторе. Нужна или нет?

вот , например, стандартный пример: 


static /*volatile*/ u32 LocalTime  @ ".fastdata" = 0;

void Delay(int timer)
{
   u32 Time = LocalTime;  
   while(LocalTime - Time < timer);
}
 

если компилируется в IAR с оптимизацией None или Low - то код работает

если оптимизация стоит medium и выше - перестает, нужно раскрыть комментарии и сделать LocalTime как volative

меня вот такой вопрос: есть ли вообще смысл оптимизации, в какой нибудь atmege или таком же примитивном

контроллере, где самого кода максимум десяток строк?

и есть ли смысл оптимизации в больших проектах, ведь очень часто код для этих проектов

берется из чужих исходников, которые непонятно кто писал и как все это работает.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Впрочем, с чего вы взяли, что без оптимизации ваш код работает всегда правильно?

44 minutes ago, inventor said:

меня вот такой вопрос: есть ли вообще смысл оптимизации, в какой нибудь atmege или таком же примитивном

контроллере, где самого кода максимум десяток строк?

Помнится в старый добрый at90s2313(2КБ кода) влазила полноценная автомобильная сигнализация с честной криптографией... У вас на это, вероятно, нужен ARM с мегабайтом...

 

На самом деле чем меньше память контроллера, тем актуальнее оптимизация кода. А когда ограничений на память нет, тогда и оптимизация не нужна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чужой исходник не работает с оптимизацией? Виновата конечно же оптимизация. :D

Если надо взять чужое, а оно кривое - всегда ему можно выставить отдельные опции компиляции, без поисков лазеек для себя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, inventor сказал:

и есть ли смысл оптимизации в больших проектах, ведь очень часто код для этих проектов

Если не понимаете работы инструмента (оптимизирующего компилятора), то надо или изучать или не пользоваться им. А по Вашему сообщению видно, что не понимаете и не пытаетесь понять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 minutes ago, jcxz said:

Если не понимаете работы инструмента (оптимизирующего компилятора), то надо или изучать или не пользоваться им. А по Вашему сообщению видно, что не понимаете и не пытаетесь понять.

А почему нужно свои эмоции выражать через личные наезды? 
Вопрос был нужна или нет оптимизация. Делимся мнениями об оптимизации, а не уровне автора вопроса. 

Я бы спросил, что это за исходники которые при максимальной оптимизации начинают сбоить.
Мне это представляется  исключительной редкостью, чем правилом. Где водятся такие исходники?   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, AlexandrY сказал:

А почему нужно свои эмоции выражать через личные наезды? 
Вопрос был нужна или нет оптимизация. Делимся мнениями об оптимизации, а не уровне автора вопроса. 

И где Вы увидели "наезды"?

Я вроде достаточно ясно выразил мнение по поводу оптимизации (как и любого инструмента): "Умеешь пользоваться - пользуйся, не умеешь - или изучай или не пользуйся". В чём именно "наезд" или какие-то "эмоции"?

А "где водятся такие исходники" - почитайте первый пост и увидите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот эту цитату прокомментируете: 

Quote

А по Вашему сообщению видно, что не понимаете и не пытаетесь понять.

Вопрос где автор нашел этот фрагмент кода.
А намек на то, что он сам его написал тоже кстати может задевать чувства.
Если автор выскажет претензии на такие подозрения, то будет прав и надо будет как-то реагировать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Хочешь оптимизации есть масса способов сделать это надежно руками...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 минут назад, AlexandrY сказал:

Вот эту цитату прокомментируете: 

а) Из поста видно, что автор не понимает как работает и для чего нужен volatile -> значит автор не понимает как работает инструмент (компилятор).

б) Автор и не пытается понять, так как если бы пытался, то просто посмотрел бы на результат работы компилятора и подумал: "Почему из таких моих строк получается такой код?". Так как компилятор сам программу не пишет, он просто переводит си-строки в асм. Из этого следует, что автор и не пытается понять как работает инструмент. Он не пытается понять что он сам сделал не так, он сразу пытается взвалить вину на свой код на компилятор - "он плохой и его не надо использовать".

Цитата

Вопрос где автор нашел этот фрагмент кода.
А намек на то, что он сам его написал тоже кстати может задевать чувства.

Жесть просто... А мои чувства например задевает Ваша неадекватная реакция. Из которой я делаю вывод, что Вы имеете видимо какую-то личную обиду на меня и здесь пытаетесь её выместить...

14 минут назад, twix сказал:

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

Не согласен. Оптимизация - вещь безусловно полезная. Потому что во многих случаях находит скрытые баги в ПО. Это касается и кода из первого поста.

Только за одно это её стОит использовать. Не говоря уже об ускорении кода и уменьшении размера.

А если что-то "не переключается" или ещё чего - надо просто искать баги и исправлять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, AlexandrY said:

А намек на то, что он сам его написал тоже кстати может задевать чувства.

Наши чувства всегда что-нибудь задевает, это нормально. Когда же выставляются претензии за "задевание чувств" или "оскорбление чувств", это уже абсурд. Мягко говоря.

Другое дело - оскорбления. Но автора здесь никто не оскорблял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 минут назад, twix сказал:

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

Программа написанная в соответствии со стандартами языка работает правильно на любых уровнях оптимизации. Если проект перестает работать при смене уровня оптимизации - в нем говнокод который надо вычищать потому что он рано или поздно обязательно нагадит.

Большой проект руками никогда не соптимизировать на уровне кодинга, просто человеческих сил не хватит. В больших проектах оптимизируют архитектуру и алгоритмы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подобного рода "оптимизации" имеют ряд преимуществ и недостатков... язык предоставляет средство, инструмент.

Если подобного рода оптимизации вынесены в platform / hardware specific модуль у которого нет внешних зависимостей - окей.

Не окей - volatile имеет смысл только в многопоточной среде, а директива с указанием стартового адреса сужает выбор платформы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 минуты назад, psyhologic сказал:

Не окей - volatile имеет смысл только в многопоточной среде,

Не обязательно. volatile также полезен в случае наличия нескольких bus-master в системе. Например: при использовании DMA-контроллера.

Ну и для ISR-ов volatile тоже очень нужен. А ISR - очень нужная вещь в embedded.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, jcxz сказал:

Не обязательно. volatile также полезен в случае наличия нескольких bus-master в системе. Например: при использовании DMA-контроллера.

Да вы правы, про DMA как-то даже в голову не пришло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оптимизация не требуется повсеместно...

 

Изменено пользователем twix

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...