-
- Про инлайн не совсем согласен, когда делаешь отладку с выключенной оптимизацией инлайн полезен, а в релизе пусть оптимизирует как хочет. Тем более указивка инлайн это только пожелание, а не приказ. - Codavr(27.12.2017 10:23)
- Инлайн - это убогая попытка преждевременно оптимизировать, то есть ещё одна разновидность псевдоинтеллектуального онанизма. Нафик-нафик. - SciFi(27.12.2017 10:26)
- Спор о красоте переходит в спор о том сжигать на костре ли за inline или достаточно пожизненного. ;-) misyachniy(150 знак., 27.12.2017 10:34)
- Кстати, кто может мне объяснить, зачем заворачивать включение лампочки в макрос? Чтобы юзверь увидел свет этой прекрасной лампы на 100 наносекунд раньше? Хочу всё знать. - SciFi(27.12.2017 10:56)
- 100нс - это на очень крутом м/к. На обычном получишь потери в единицы мкс. И испортишь жизнь оптимизатору. А чем функция лучше макроса? Хочу все знать. - AlexBi(27.12.2017 12:41)
- Что за вопрос "чем функция лучше макроса"? Наоборот, "чем макрос лучше функции?", так как он, очевидно, заменяет функцию в нелепой попытке заинлайнить код. Для современных компиляторов функции совсем не являются препятствием для оптимизации, то SciFi(229 знак., 27.12.2017 12:57)
- Ножками на пике или авр через функцию дрыгать? Попробуйте вывести меандр с вызовом соответствующей функции из тела программы, посмеемся над его частотой. Если у Вас так на ARM так не получается, то не надо остальным связывать руки. - Экспериментатор(27.12.2017 13:17, )
- Если вы пытаетесь ставить рекорды частоты ногодрыга при помощи Си, я вам сочувствую. Что вас довело до дна? В какой момент что-то пошло не так? - SciFi(27.12.2017 13:26)
- По Вашим словам: "функции совсем не являются препятствием для оптимизации, то есть макрос как замена функции теряет остатки смысла существования." Смена состояния порта для пиков и авр выполняется на Asm и в макросе Си одинаково. Покажите мне Ваш Экспериментатор(73 знак., 27.12.2017 13:37, )
- gcc -O2 -flto. Но я должен оговориться: когда речь идёт о программах в пределах 500 строк, а мы знаем, что пользователи мелких МК имеют мозговую травму от ассемблера, Си выступает в роли облагороженного ассемблера (хотя бы позволяет забыть про SciFi(131 знак., 27.12.2017 13:43)
- Если ваша программа убирается в один файл (возможно путем инклудов), тогда такая оптимизация спасет. А если нет, будет настоящий вызов функции. Программы в один файл вроде как не интересны, а программы собираемые инклудами большая экзотика. Есть, AlexBi(117 знак., 27.12.2017 15:30)
- Ещё раз: gcc -O2 -flto. Почитайте, что такое Link Time Optimization --> SciFi(24 знак., 27.12.2017 15:39, ссылка)
- Пользователи ARM имеют мозговую травму, что потребление тока в активном режиме роли не играет. Говнокод запущенный на ARM с тактовой 32768 кГц проиграет по потреблению любому пику или авр, так как там вместо одной команды будет десяток. - Экспериментатор(27.12.2017 13:56, )
- У меня нехватки электроэнергии нет, такшта поддержать беседу не смогу. И звените. - SciFi(27.12.2017 14:04)
- Если ваша программа убирается в один файл (возможно путем инклудов), тогда такая оптимизация спасет. А если нет, будет настоящий вызов функции. Программы в один файл вроде как не интересны, а программы собираемые инклудами большая экзотика. Есть, AlexBi(117 знак., 27.12.2017 15:30)
- gcc -O2 -flto. Но я должен оговориться: когда речь идёт о программах в пределах 500 строк, а мы знаем, что пользователи мелких МК имеют мозговую травму от ассемблера, Си выступает в роли облагороженного ассемблера (хотя бы позволяет забыть про SciFi(131 знак., 27.12.2017 13:43)
- По Вашим словам: "функции совсем не являются препятствием для оптимизации, то есть макрос как замена функции теряет остатки смысла существования." Смена состояния порта для пиков и авр выполняется на Asm и в макросе Си одинаково. Покажите мне Ваш Экспериментатор(73 знак., 27.12.2017 13:37, )
- Если вы пытаетесь ставить рекорды частоты ногодрыга при помощи Си, я вам сочувствую. Что вас довело до дна? В какой момент что-то пошло не так? - SciFi(27.12.2017 13:26)
- Ножками на пике или авр через функцию дрыгать? Попробуйте вывести меандр с вызовом соответствующей функции из тела программы, посмеемся над его частотой. Если у Вас так на ARM так не получается, то не надо остальным связывать руки. - Экспериментатор(27.12.2017 13:17, )
- Что за вопрос "чем функция лучше макроса"? Наоборот, "чем макрос лучше функции?", так как он, очевидно, заменяет функцию в нелепой попытке заинлайнить код. Для современных компиляторов функции совсем не являются препятствием для оптимизации, то SciFi(229 знак., 27.12.2017 12:57)
- HAL - misyachniy(27.12.2017 11:46)
- В каком смысле хал? Хал - это обязательно макросы и ни в коем случае не функции? - SciFi(27.12.2017 11:48)
- Функции уже написаны до меня. HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); - misyachniy(27.12.2017 11:58)
- Интересно, кто придумывает такие угробищные халы? Это же написано с особым цинизмом. - SciFi(27.12.2017 12:17)
- Кстати, хороший вопрос - что лучше для оборачивания таких простых HAL-функций? Я раньше делал как функцию, теперь почти все дефайном. - michas(27.12.2017 11:54)
- Функции уже написаны до меня. HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); - misyachniy(27.12.2017 11:58)
- В каком смысле хал? Хал - это обязательно макросы и ни в коем случае не функции? - SciFi(27.12.2017 11:48)
- За 100 наносекунд свет в соседнюю квартиру улетит :) - Codavr(27.12.2017 10:59)
- 100нс - это на очень крутом м/к. На обычном получишь потери в единицы мкс. И испортишь жизнь оптимизатору. А чем функция лучше макроса? Хочу все знать. - AlexBi(27.12.2017 12:41)
- Если в макросе нет "do { ... } while (0)", тебя тоже надо сжечь :-) - SciFi(27.12.2017 10:36)
- За это призывали сжигать уже после четвертования еще во времена изобретения инлайна. - Codavr(27.12.2017 10:35)
- Да ладно, так весь текст прячется. misyachniy(70 знак., 27.12.2017 10:46)
- Имел случаи когда пара строчек засунутых в дефайн приводила к многочасовому еблису с отладкой. И это при том что всячески стараюсь избегать этого приема. А так да, смотрится красиво, но я не настолько люблю красоту, чтобы хер об нее сломать. Если Codavr(116 знак., 27.12.2017 10:53 - 10:57)
- А у микрочипов Вы регистры последовательно через битовые поля выставляете? Красота неописуемая, только код родного компилятора в размерность шины длинней и во столько же раз медленней. Нах такую красоту, я за битовые маски и макросы. Ногодрыги не Экспериментатор(297 знак., 27.12.2017 12:08, )
- см ссылку -> Codavr(312 знак., 27.12.2017 12:39 - 12:43, ссылка)
- А у микрочипов Вы регистры последовательно через битовые поля выставляете? Красота неописуемая, только код родного компилятора в размерность шины длинней и во столько же раз медленней. Нах такую красоту, я за битовые маски и макросы. Ногодрыги не Экспериментатор(297 знак., 27.12.2017 12:08, )
- Имел случаи когда пара строчек засунутых в дефайн приводила к многочасовому еблису с отладкой. И это при том что всячески стараюсь избегать этого приема. А так да, смотрится красиво, но я не настолько люблю красоту, чтобы хер об нее сломать. Если Codavr(116 знак., 27.12.2017 10:53 - 10:57)
- Да ладно, так весь текст прячется. misyachniy(70 знак., 27.12.2017 10:46)
- Кстати, кто может мне объяснить, зачем заворачивать включение лампочки в макрос? Чтобы юзверь увидел свет этой прекрасной лампы на 100 наносекунд раньше? Хочу всё знать. - SciFi(27.12.2017 10:56)
- Ну при нынешних компилерах наверное уже так и есть. Пора забыть эту дурацкую привычку, а ведь на заре cpp их рекламировали чуть ли не как суперпупер фичу нового языка призваную навсегда избавить мир от макросов :) - Codavr(27.12.2017 10:31)
- Спор о красоте переходит в спор о том сжигать на костре ли за inline или достаточно пожизненного. ;-) misyachniy(150 знак., 27.12.2017 10:34)
- Инлайн - это убогая попытка преждевременно оптимизировать, то есть ещё одна разновидность псевдоинтеллектуального онанизма. Нафик-нафик. - SciFi(27.12.2017 10:26)
- Про инлайн не совсем согласен, когда делаешь отладку с выключенной оптимизацией инлайн полезен, а в релизе пусть оптимизирует как хочет. Тем более указивка инлайн это только пожелание, а не приказ. - Codavr(27.12.2017 10:23)