Anton
мне трудно понять что именно ты понимаешь
Evgen
мне трудно понять что именно ты понимаешь
ну то ты косвенные вызовы пытаешься измерять, то до мышей доё... т.е. до деления на 3
Anton
ну то ты косвенные вызовы пытаешься измерять, то до мышей доё... т.е. до деления на 3
про деление на 3 была не моя мысль, она вообще для меня побочная
Anton
деление на целочисленную константу -- частая операция и оптимизатор часто умеет сам посчитать что ему выгоднее -- заменить на сдвиги+сложения или напрямую попросить алгоритм процессора. но доверие к оптимизатору растёт только с его проверками (доверяй, но проверяй)
Anton
ну то ты косвенные вызовы пытаешься измерять, то до мышей доё... т.е. до деления на 3
результат моего теста в том, что вызов функции сильно дорогая операция, дороже, чем я привык на десктоп-процах, нужно стараться инлайнить по максимуму. что уже хоть как-то подаёт мне идею как надо писать более быстрый код. хотя, понимаю и принимаю, писать быстрый и эффективный код далеко не каждому нужно.
Anton
я тебе уже ответил, если ты не заметил. Ты налажал чуть менее, чем полностью
я теряюсь в догадках что за мысль ты до меня донести хотел. ты привёл пример с флоатом как ответ на "заменить деление умножением", хотя изначально преложение про мой код касалось функции с целочисленным делением
Anton
бл... выше смотри,
линк на сообщение приведи. заодно сам его прочитай
Maxx
не по указателю. по указателю невозможно заинлайнить
ну, в тесте сравнивались не столько "инлаен" против "вызова ф-ции", сколько прямой вызов против vtable
Evgen
линк на сообщение приведи. заодно сам его прочитай
иди ка ты куда подальше. Не хочешь читать, что тебе ответили и бенчмарки относительно правильные привели, то кто тебе доктор
Anton
ну, в тесте сравнивались не столько "инлаен" против "вызова ф-ции", сколько прямой вызов против vtable
да, идея была изначально такая, но любая оптимизация, что -Os, что -O2 даже без указаний inline всё равно инлайнили, исходя из результатов
Maxx
скорее там тестировался оптимизатор
оптимизатор сразу отключили, когда первые результаты были 1-1-дичь. без оптимизатора стало дичь-дичь-(дичь+2%)
Maxx
да, идея была изначально такая, но любая оптимизация, что -Os, что -O2 даже без указаний inline всё равно инлайнили, исходя из результатов
с оптимизатором, по-моему, там вообще вызовов не происходило: оптимизатор "увидел", что результат нигде не используется, и тупо вырезал всё "лишнее". а в тесте с vtable распознать не смог, и на всякий случай оставил.
Anton
какая из них?
я поменял код, добавил использование результата https://gist.github.com/jef-sure/208bbd829e8b909cfb10ac8bd743b01d
Maxx
я поменял код, добавил использование результата https://gist.github.com/jef-sure/208bbd829e8b909cfb10ac8bd743b01d
хм.. может это cache miss? попробуй что ли затащить таблицу внутрь функции, чтоб она на стэке создавалась рядом с "рабочими" переменными
Quiero vivir en España
Maxx
мне эти твои тесты — как серпом по яйцам. только, пмаешь, придумал себе большой проект на плюсах с целью "расти над собой", а теперь думаю вот =( а на чистом си не хочется, а к русту душа вщ не легла.
Quiero vivir en España
Инвертировать только нужно сигнал
Почти мой случай, но... не подходит - нужно, чтобы в обычном режиме по этому сигналу действие производилось, а не перезагрузка.
Quiero vivir en España
Вроде гпио16 с этим связано, могу ошибаться
Не совсем так. ГПИО16 по таймеру/будильнику подаст низкий сигнал, а если эту ногу соединить с RST, это может разбудить ESP.
Quiero vivir en España
ok-home
я поменял код, добавил использование результата https://gist.github.com/jef-sure/208bbd829e8b909cfb10ac8bd743b01d
1. любая из твоих функций возвращает всегда 0 - потому что вызывается с нулевым значением - оптимизатор это видит и по честному этот результат инлайнит даже не вызывая функцию 2. Если ты пытаешься посчитать разницу if/switch - именно на разницу ты вызываешь всего 5 раз и потом честно крутишь очень долго только вызов функции 3. там еще есть непонятки по оптимизации - но уже этого достаточно
Quiero vivir en España
#энергопотребление ESP8266. Сначала предыстория. Нужно мне было простейшее устройство, с задачей даже Arduino Nano справилась бы, но памяти нужно было хотя бы 20 кбайт. И в перспективе работа от аккумулятора. Выбор пал на WemosD1 mini за те же деньги. Замеряю ток. Потребление 74.5 мА. Как-то прям много. В разных источниках пишут по-разному, в некоторых - что просто при обычном включении Wi-Fi не задействуется, значит, ESP находится в режиме модемного сна. Но миллиамперметр намекает на обратное. Пробую отключить Wi-Fi вот так: #include <ESP8266WiFi.h> void setup() { wifi_set_opmode(NULL_MODE); ... Запускаю - те же самые 74.5 мА. Может, я что-то делаю не так? P.S. В light-sleep - режиме потребление не замерял, а вот в deep-sleep потребление 3.5 мА. Что всё равно многовато, если честно.
Anton
ну иф-свич к делу не имел отношения, да. там просто шум
Serjio
Что за софт? Разнесение по каналам и мощности сигнала в данной точке?
Anton
решил поставить идф 5.0 с тулзами. на тулзах обломался -- виндовый антивирус заявляет что я вирус пытаюсь скачать и не даёт...
Anton
сижу блин в бешенстве...
Maxx
решил поставить идф 5.0 с тулзами. на тулзах обломался -- виндовый антивирус заявляет что я вирус пытаюсь скачать и не даёт...
инсталлер ведь в самом конце сам тебе предлагает "завести все папки в исключения антивирусу, иначе всё будет Плохо(тм)"
Anton
не могу найти где это отрубить у него. долбаный дип инстинкт
Anton
даже таскменеджер с админскими правами не может это говно отрубить
Maxx
Я считаю, что к русту надо с измальства, пока мозг плюсами не засран.
не знаю. может быть. в русте постоянно кажется, что где-то наёбка с кучей невидимой магии под капотом. в цэ — всё честно: выстрелил себе в ногу, ногу оторвало к ебеням. а в русте оно на каждый чих будет проверять, не стреляю ли я себе в ногу, и т.п.
Evgen
я поменял код, добавил использование результата https://gist.github.com/jef-sure/208bbd829e8b909cfb10ac8bd743b01d
мыши плакали, кололись, но продолжали.... не используешь ты результат. Или выводи его в printf, или volatile int GlobalVar; сделай
Anton
да я вообще щас сломал себе идф-тулс изза попытки поставить свежие
Anton
мыши плакали, кололись, но продолжали.... не используешь ты результат. Или выводи его в printf, или volatile int GlobalVar; сделай
теоретически, достаточно что переменная глобальная, только уже линкер может определить что она нигде больше не используется
Anton
тебе показали, но ты не увидел
ты либо говори конкретно, либо не говори. глубокомысленные намёки не создают тебе образ умного
Anton
я ж код выложил, поделился. есть апдейты -- принимаю
Ruslan
Нафига тратить время на тесты, будет проблема, решайте по месту, опыта смотрю хватит
SSR
Круче только треугольные
К этому близок пока только испанец
Evgen
я ж код выложил, поделился. есть апдейты -- принимаю
а результат поменять религия запрещает? direct_if took: 1973049 micros direct_switch took: 2140848 micros indirect_version took: 4617454 micros
Evgen
Круче только треугольные
а задача стоит - поехать на двуугольной палке!
Maxx
Ну, конечно, напрягает, что за тобой следит компилер. Но лучше уж он сейчас, чем потом это вылезет через полгода.
так он же это делает не только "сейчас", а постоянно и всегда? или я не разобрался, и в релизе он убирает все проверки?
Anton
а результат поменять религия запрещает? direct_if took: 1973049 micros direct_switch took: 2140848 micros indirect_version took: 4617454 micros
я ж говорю, с антивирусом щас борюсь, решил тулзы обновить. в итоге руками собрал idf.py.exe
Maxx
я так понял, он не даст собрать проект с потенциальными косяками.
это-то ладно, но он же и в рантайме проверки ещё делает?
Evgen
я ж говорю, с антивирусом щас борюсь, решил тулзы обновить. в итоге руками собрал idf.py.exe
понятно. многозадачность у кожаных мешков на уровне виндоуз 3.1
Anton
переход с idf 4.3 на 5.0 принёс новые тулзы и с ним гцц 11 вместо 8.4
Evgen
https://t.me/ProEsp8266/212054
ну ок. говорю конкретно: ты тормоз криворукий
Anton
ну ок. говорю конкретно: ты тормоз криворукий
а, ну так бы сразу и сказал. а я то всё понять не мог в чём дело
Evgen
ахаха
Maxx
переход с idf 4.3 на 5.0 принёс новые тулзы и с ним гцц 11 вместо 8.4
плюс SMP-ядро и mingw компилятор под винду, которым можно собирать тесты для какой-нибудь логики
Anton
в общем, до вертолётика мне далеко. я закончил свои тесты. результат в гисте: https://gist.github.com/jef-sure/208bbd829e8b909cfb10ac8bd743b01d объяснить такую разницу между ифом и свичем не могу... :)
Serjio
Порядком вызовы поменяй?
Anton
я закончил
Indr1x
обычно case всегда был быстрее if, а тут почему то наоборот
SetPf
обычно case всегда был быстрее if, а тут почему то наоборот
А чому? Оно вроде в массив адресов с релатив джампом ток с определенных размеров начинает превращаться. Так то все будут сорта BRNE всяких, не? (По идее одинаковая скорость на малом кол-ве ветвлений будет)
Indr1x
да фиг знает, по таблице все равно прыгать быстрее видимо выходит
Ruslan
ну на интелах было так
Hidden Mystery
Ребяяяяят
Hidden Mystery
А чел дело говорит, чтоб её очистить надо вот столько дофига действий?
Hidden Mystery
https://youtu.be/pUy88hifK3I