inventor 0 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба вот , например, стандартный пример: static /*volatile*/ u32 LocalTime @ ".fastdata" = 0; void Delay(int timer) { u32 Time = LocalTime; while(LocalTime - Time < timer); } если компилируется в IAR с оптимизацией None или Low - то код работает если оптимизация стоит medium и выше - перестает, нужно раскрыть комментарии и сделать LocalTime как volative меня вот такой вопрос: есть ли вообще смысл оптимизации, в какой нибудь atmege или таком же примитивном контроллере, где самого кода максимум десяток строк? и есть ли смысл оптимизации в больших проектах, ведь очень часто код для этих проектов берется из чужих исходников, которые непонятно кто писал и как все это работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 53 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба Правильно оптимизировал - если данные в LocalTime нигде не используются, то можно их и оптимизировать. Впрочем, с чего вы взяли, что без оптимизации ваш код работает всегда правильно? 44 minutes ago, inventor said: меня вот такой вопрос: есть ли вообще смысл оптимизации, в какой нибудь atmege или таком же примитивном контроллере, где самого кода максимум десяток строк? Помнится в старый добрый at90s2313(2КБ кода) влазила полноценная автомобильная сигнализация с честной криптографией... У вас на это, вероятно, нужен ARM с мегабайтом... На самом деле чем меньше память контроллера, тем актуальнее оптимизация кода. А когда ограничений на память нет, тогда и оптимизация не нужна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба Чужой исходник не работает с оптимизацией? Виновата конечно же оптимизация. :D Если надо взять чужое, а оно кривое - всегда ему можно выставить отдельные опции компиляции, без поисков лазеек для себя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба 1 час назад, inventor сказал: и есть ли смысл оптимизации в больших проектах, ведь очень часто код для этих проектов Если не понимаете работы инструмента (оптимизирующего компилятора), то надо или изучать или не пользоваться им. А по Вашему сообщению видно, что не понимаете и не пытаетесь понять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба 22 minutes ago, jcxz said: Если не понимаете работы инструмента (оптимизирующего компилятора), то надо или изучать или не пользоваться им. А по Вашему сообщению видно, что не понимаете и не пытаетесь понять. А почему нужно свои эмоции выражать через личные наезды? Вопрос был нужна или нет оптимизация. Делимся мнениями об оптимизации, а не уровне автора вопроса. Я бы спросил, что это за исходники которые при максимальной оптимизации начинают сбоить. Мне это представляется исключительной редкостью, чем правилом. Где водятся такие исходники? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба 3 минуты назад, AlexandrY сказал: А почему нужно свои эмоции выражать через личные наезды? Вопрос был нужна или нет оптимизация. Делимся мнениями об оптимизации, а не уровне автора вопроса. И где Вы увидели "наезды"? Я вроде достаточно ясно выразил мнение по поводу оптимизации (как и любого инструмента): "Умеешь пользоваться - пользуйся, не умеешь - или изучай или не пользуйся". В чём именно "наезд" или какие-то "эмоции"? А "где водятся такие исходники" - почитайте первый пост и увидите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба Вот эту цитату прокомментируете: Quote А по Вашему сообщению видно, что не понимаете и не пытаетесь понять. Вопрос где автор нашел этот фрагмент кода. А намек на то, что он сам его написал тоже кстати может задевать чувства. Если автор выскажет претензии на такие подозрения, то будет прав и надо будет как-то реагировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
twix 0 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба На мой взгляд оптимизация компиляторов вред безусловный. Никогда не знаешь как он наоптимизирует, а потом ищи где флаг не переключается или не отслеживается. Для большого проекта это тем более актуально. Хочешь оптимизации есть масса способов сделать это надежно руками... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба 16 минут назад, AlexandrY сказал: Вот эту цитату прокомментируете: а) Из поста видно, что автор не понимает как работает и для чего нужен volatile -> значит автор не понимает как работает инструмент (компилятор). б) Автор и не пытается понять, так как если бы пытался, то просто посмотрел бы на результат работы компилятора и подумал: "Почему из таких моих строк получается такой код?". Так как компилятор сам программу не пишет, он просто переводит си-строки в асм. Из этого следует, что автор и не пытается понять как работает инструмент. Он не пытается понять что он сам сделал не так, он сразу пытается взвалить вину на свой код на компилятор - "он плохой и его не надо использовать". Цитата Вопрос где автор нашел этот фрагмент кода. А намек на то, что он сам его написал тоже кстати может задевать чувства. Жесть просто... А мои чувства например задевает Ваша неадекватная реакция. Из которой я делаю вывод, что Вы имеете видимо какую-то личную обиду на меня и здесь пытаетесь её выместить... 14 минут назад, twix сказал: На мой взгляд оптимизация компиляторов вред безусловный. Никогда не знаешь как он наоптимизирует, а потом ищи где флаг не переключается или не отслеживается. Не согласен. Оптимизация - вещь безусловно полезная. Потому что во многих случаях находит скрытые баги в ПО. Это касается и кода из первого поста. Только за одно это её стОит использовать. Не говоря уже об ускорении кода и уменьшении размера. А если что-то "не переключается" или ещё чего - надо просто искать баги и исправлять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 4 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба 12 minutes ago, AlexandrY said: А намек на то, что он сам его написал тоже кстати может задевать чувства. Наши чувства всегда что-нибудь задевает, это нормально. Когда же выставляются претензии за "задевание чувств" или "оскорбление чувств", это уже абсурд. Мягко говоря. Другое дело - оскорбления. Но автора здесь никто не оскорблял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_3m 4 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба 25 минут назад, twix сказал: На мой взгляд оптимизация компиляторов вред безусловный. Никогда не знаешь как он наоптимизирует, а потом ищи где флаг не переключается или не отслеживается. Для большого проекта это тем более актуально. Хочешь оптимизации есть масса способов сделать это надежно руками... Программа написанная в соответствии со стандартами языка работает правильно на любых уровнях оптимизации. Если проект перестает работать при смене уровня оптимизации - в нем говнокод который надо вычищать потому что он рано или поздно обязательно нагадит. Большой проект руками никогда не соптимизировать на уровне кодинга, просто человеческих сил не хватит. В больших проектах оптимизируют архитектуру и алгоритмы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psyhologic 0 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба Подобного рода "оптимизации" имеют ряд преимуществ и недостатков... язык предоставляет средство, инструмент. Если подобного рода оптимизации вынесены в platform / hardware specific модуль у которого нет внешних зависимостей - окей. Не окей - volatile имеет смысл только в многопоточной среде, а директива с указанием стартового адреса сужает выбор платформы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба 23 минуты назад, psyhologic сказал: Не окей - volatile имеет смысл только в многопоточной среде, Не обязательно. volatile также полезен в случае наличия нескольких bus-master в системе. Например: при использовании DMA-контроллера. Ну и для ISR-ов volatile тоже очень нужен. А ISR - очень нужная вещь в embedded. Также иногда полезен при использовании режимов энергосбережения (когда нужна гарантия, что завершены все записи в память, сохраняющую своё содержимое при уходе в сон). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psyhologic 0 3 декабря, 2018 Опубликовано 3 декабря, 2018 · Жалоба 2 минуты назад, jcxz сказал: Не обязательно. volatile также полезен в случае наличия нескольких bus-master в системе. Например: при использовании DMA-контроллера. Да вы правы, про DMA как-то даже в голову не пришло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
twix 0 3 декабря, 2018 Опубликовано 3 декабря, 2018 (изменено) · Жалоба Оптимизация не требуется повсеместно... Изменено 3 декабря, 2018 пользователем twix Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться