к порядку следования операндов Case ??
Я бы сделал первыми(если такое возможно) в лесенке: switch (){ case } наиболее вероятные варианты, которые предположительно поступят первыми:))
я пока понимаю, что надо бы первыми сделать элементы, реакция на которые нужна более быстрая.
Ну да, например в части игры где юзер будет сражаться с чудовищем и у него только нож и базука, вероятнее всего юзер выберет первым оружием базуку))
тут происходит аналого-позиционное преобразование, и gcc меня спас тем, что ему в case можно диапазоны подсовывать.
Нужен атрибут "likely"?
Эт из C++20 что-ли?))
Вы так говорите, как будто это что-то плохое.
расскажи, где ты достал пневмопроцессор?
Нет, нет, я просто ещё с этим не сталкивался. Спасибо что дали наводку, поизучаю👍
Не .сpp:)) https://en.cppreference.com/w/cpp/language/attributes/likely
Ааааа, понял))
в драйверах линуха наблюдаю.
а насколько быстрая реакция вам нужна?
хороший вопрос... возможно я получу нужное мне быстродействие, просто прибавив тактовой частоты МК. Изначально там код написан весьма грубо, например то же самое преобразование было написано циклом, где перебирались элементы массива и сравнивались с входящим значением, а при "попадании" цикл завершался и на выходе был его текущий счетик...
Ага, там под макросом интрисик компилятора дергается.
Case просто выстраивает относительные джампы же в простейшем случае. Подробностей не знаю, но легче тут посмотреть дизассемблированный код. Чтоб посмотреть, сортирует ли компилятор «кейсы» перед вычислением смещений адреса
прост мне кажется размышлять над быстродействием свич кейс, такое себе занятие) последнее чем стоило бы заняться
наверное да. проще сразу разогнаться, и подправить там ряд констант, чтобы не все разогналось
вообще-то ответ тут подразумевается во временных единицах. ну не знаю, 1нс, 1мкс, 1мс, 1год
сделайте бинарный поиск в отсортированном массиве
Я тут 2 синуса посчитать не могу)) пришлось 1м пользоваться по всей программе
Кстати, выглядит бредом, но иногда можно и поменять на цепочку if-else. По скорости не интересовался, но несколько байтов сэкономить можно.
не выглядит бредом. но профит зависит от распределения вероятностей перехода по прямой ветке (if ) и альтернативной (else) . если 50/50 , то профита не будет
Сча глянул у меня в прошивке при кейсе большом появляется табличка переходов в секции свич, правда ещё не глядел че там в асме и как переходы выбираются, эт я про кейсы. Кейсы сами энум от балды
да, я читал, что одна из возможных реализаций - это lookup table
Обсуждают сегодня