Долой империалистический интернационал!
-
- Вынести каждый кейс в отдельный файл, а потом инклюде кейс1.с - H7H2V(27.12.2017 14:37)
- Была и такая дурацкая мысль, но я ее отверг с презрением. Codavr(230 знак., 27.12.2017 15:26 - 15:35)
- Варианты: fk0(902 знак., 27.12.2017 13:39 - 13:42)
- 8) отказаться от программирования и зарабатывать деньги другими методами? :-) - SciFi(27.12.2017 13:45)
- Продажей почки, например. :-) Boвa(242 знак., 27.12.2017 13:46 - 14:16)
- Данный способ предложен в книге Б. Страуструпа "Язык программирования C++". Точную цитату не дам, времени нет. Он вполне серьёзен, например, в области embedded часто вместо программирования достаточно усложнить схемотехнику. Или где-то вместо fk0(89 знак., 27.12.2017 13:49)
- Купи себе медаль и носи на пузе шоб все видели. - Codavr(27.12.2017 15:27)
- 8) отказаться от программирования и зарабатывать деньги другими методами? :-) - SciFi(27.12.2017 13:45)
- Очевидно, упаковать переменныя в статическую структуру и передавать ее адрес в инлайн-функции. - Petrovich(27.12.2017 12:11,
)
- Ещё посоветуйте, до кучи, проксорить и применить формулы из ТФКП :) - mut(27.12.2017 12:16)
- Вы, я вижу, тянетесь к знаниям. А научить вас копировать массивы на Си прямо как a=b? - Petrovich(27.12.2017 12:53,
)
- Есть у меня один знакомый, который всегда тянулся к Си, а программировал на ассемблере :) - mut(27.12.2017 13:00)
- Правильный погромист всегда тянется к ассемблеру, но усилием воли одёргивает себя и программирует на Си. - SciFi(27.12.2017 13:09)
- Сегодня! Всерьез! В одном НИИ! Обсуждался вопрос C или ассемблер :( - VLLV(27.12.2017 20:21)
- Правильный погромист всегда тянется к ассемблеру, но усилием воли одёргивает себя и программирует на Си. - SciFi(27.12.2017 13:09)
- Есть у меня один знакомый, который всегда тянулся к Си, а программировал на ассемблере :) - mut(27.12.2017 13:00)
- Вы, я вижу, тянетесь к знаниям. А научить вас копировать массивы на Си прямо как a=b? - Petrovich(27.12.2017 12:53,
- Ещё посоветуйте, до кучи, проксорить и применить формулы из ТФКП :) - mut(27.12.2017 12:16)
- Очевидно, упаковать переменныя в статическую структуру и передавать ее адрес в инлайн-функции. - Petrovich(27.12.2017 12:10,
)
- Хороший вариант. Что говорит теория относительно безопасности такого финта? - Codavr(27.12.2017 12:16 - 12:19)
- А во всяких, например, армированных процах, передача указателя идет в регистре и дальнейший доступ с косвенной адресацией, а не с прямой. - Хитрый Китаец(27.12.2017 14:59)
- Ещё один контуженный ассемблером. Да хоть голубиной почтой, какая разница? :-) - SciFi(27.12.2017 15:04)
- Задачи такие, не знаю, к счастью или сожалению. Не могу на 100метровом арме работать, чемодан батареек тяжел. - Хитрый Китаец(27.12.2017 15:48)
- Смартфоностроителей это не смутило. Они вставили в своё поделие гигагерцовый многоядерный проц и заставили юзверей заряжать всё это два раза в день :-) - SciFi(27.12.2017 15:52)
- Привычка, отсматривать иногда код нагенеренный. В TMS'е 55-м, контекст в прерывании ~40 регистров, команд быстрого сохранения нет, зато 300 мег. А в Renesasaх, в зависимости от for, while, do либо используются быстрые команды инкремента/декремента Хитрый Китаец(22 знак., 27.12.2017 16:06)
- Смартфоностроителей это не смутило. Они вставили в своё поделие гигагерцовый многоядерный проц и заставили юзверей заряжать всё это два раза в день :-) - SciFi(27.12.2017 15:52)
- Задачи такие, не знаю, к счастью или сожалению. Не могу на 100метровом арме работать, чемодан батареек тяжел. - Хитрый Китаец(27.12.2017 15:48)
- Ещё один контуженный ассемблером. Да хоть голубиной почтой, какая разница? :-) - SciFi(27.12.2017 15:04)
- Это не финт, а стандартная практика. Посмотри хотя бы на <stdio.h>: все функции для работы с файлами принимают указатель на структуру FILE*. - SciFi(27.12.2017 12:28)
- Логично. - Codavr(27.12.2017 12:30)
- А во всяких, например, армированных процах, передача указателя идет в регистре и дальнейший доступ с косвенной адресацией, а не с прямой. - Хитрый Китаец(27.12.2017 14:59)
- Хороший вариант. Что говорит теория относительно безопасности такого финта? - Codavr(27.12.2017 12:16 - 12:19)
- Очевидно же. Сделай отдельный файл с теми самыми статическими переменными и плоди функции сколько хочешь. А за инлайн надо больно бить линейкой по рукам. Как будто ты лучше компилятора знаешь, что инлайнить, а что нет. Ага, щас. - SciFi(27.12.2017 10:13 - 10:17)
- Да, кстати, это даже не первый, а нулевой пункт. В C++ еще можно в namespace положить. - fk0(27.12.2017 13:41)
- Так это же будут другие переменные, разве нет? Или для инлайнов это не так? или ты предлагаешь их сделать статическими не в функции, а в файле? - Codavr(27.12.2017 10:17)
- Какие другие? Статические переменные в шапке файла общие для всех функций этого файла. Про инлайн я дописал выше, за него сжигать надо. - SciFi(27.12.2017 10:18)
- Про инлайн не совсем согласен, когда делаешь отладку с выключенной оптимизацией инлайн полезен, а в релизе пусть оптимизирует как хочет. Тем более указивка инлайн это только пожелание, а не приказ. - 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)
- Какие другие? Статические переменные в шапке файла общие для всех функций этого файла. Про инлайн я дописал выше, за него сжигать надо. - SciFi(27.12.2017 10:18)
- Вынести каждый кейс в отдельный файл, а потом инклюде кейс1.с - H7H2V(27.12.2017 14:37)