4 проверки - 4 джампа. Если заменить на & то 2 джампа, хотя должен быть 1.
С & и -O0 - 1 джамп.
Предсказанный переход выгоднее, чем 3-4 арифметических инструкции.
нет, арифметика выполняется в любом случае как бы забегая вперед, и предсказанный перхеод позволяет сразу выбрать нужный результат из веток результатов, которые выполнились параллельно. Больше веток - больше нагрузки.
Интересно, одни пишут что С для полного контроля над происходящим, а тут вы утверждаете, что компилятор сам сделает, что ему вздумается. Вы уж определитесь :))
&& - это жесткий уход в jmp, гарантирующий, что следующие проверки не вызовутся. && и & это серьезная разница в том какой код будет вызываться.
конечно я допускаю что какой-нибудь навороченный компилятор на базе llvm оптимизаций может и поймет что числовые проверки можно провести без jmp для ускорения (что вряд ли, надо тестить), но библиотека позиционируется как низкоуровневая, а значит пользователи будут компилить на чем угодно для своих ембед-девайсов, так не лучше ли писать сразу оптимизированный код под самый тупой компилятор? =)
с приходом яндекса сначала стало лучше - больше конкуренции, ниже цена. А потом они выкупили рутакси, взвинтили цены, я стал пользоваться автобусом, а многим таксистам пришлось вернуться назад в бизнес.
Так новые языки наоборот облегчают программирование и ускоряют процесс приведения задумки в реальность. Если вы старый С++ динозавр, самое время попробовать новые языки.
все высоконагруженные алгоритмы связанные с рендерингом встроены в движок. В юнити есть даже DOTS. Тебе даже с BSP деревьями не надо иметь дел. Юзеру остаётся управлять только логикой. Если ты изобретаешь велосипеды на avx, скорее всего ты не используешь движок по назначению. Более того, если твоя игра жрёт проц, значит архитектура твоей игры убогая, и тебе надо отправляться на перестажировку, как это стало с Battlefield 2042, которая жрёт 80% проца i7-9700K при этом количество объектов в мире можно сосчитать на пальцах, и С++ его не спас, наоборот критические баги фиксятся неделями, потому что очевидно что игра компилится долго , и хотфиксы не залить. В итоге 80% юзер базы уже отвалилось. Это всё что надо знать про написание ААА игр на С++ в 2021.
Если бы С++ был отличен, то UE пользователи на нем бы и писали , но они предпочитают blueprints.
Если 20 лет назад тебе надо было писать сырой код OpenGL то сейчас надо управлять лишь логикой игры, и С++ для этих целей не подходит.
Вот еще пара относительно новых движков, которые так же используют C# - Xenko и FLAX.
Ставлю на 6.0 - 6.5 оценку IMDB. Кстати почему есть ставки на спорт, но нет на оценку IMDB ?
Не взлетит как и все фильмы, где молодой герой в прошлом возвращается старым в новом фильме и даёт всем жару. Ну нету уже задора в потускневших глазах Киану =(
Как удобно ютуб отключил дизлайки. Теперь вы не сможете накидать дизлайков в трейлер после выхода фильма, чтобы отобрать миллионы прибыли.
о ! что-то уже давно не изобретали новый супер аккумулятор, который изменит мир.
твой пример не корректен. Компилятор оптимизировал результат функции исходя из данных сравнения.
Проверять надо исполняемый код, который следует после сравнения.
https://godbolt.org/z/cdW5d3fnr
4 проверки - 4 джампа. Если заменить на & то 2 джампа, хотя должен быть 1.
С & и -O0 - 1 джамп.
нет, арифметика выполняется в любом случае как бы забегая вперед, и предсказанный перхеод позволяет сразу выбрать нужный результат из веток результатов, которые выполнились параллельно. Больше веток - больше нагрузки.
и всё это никак не вяжется в парадигму simple какую они заявляют на главном сайте.
0 или 1
Интересно, одни пишут что С для полного контроля над происходящим, а тут вы утверждаете, что компилятор сам сделает, что ему вздумается. Вы уж определитесь :))
&& - это жесткий уход в jmp, гарантирующий, что следующие проверки не вызовутся. && и & это серьезная разница в том какой код будет вызываться.
См мой коммент https://habr.com/ru/company/mvideo/news/t/592699/comments/#comment_23850159
конечно я допускаю что какой-нибудь навороченный компилятор на базе llvm оптимизаций может и поймет что числовые проверки можно провести без jmp для ускорения (что вряд ли, надо тестить), но библиотека позиционируется как низкоуровневая, а значит пользователи будут компилить на чем угодно для своих ембед-девайсов, так не лучше ли писать сразу оптимизированный код под самый тупой компилятор? =)
результат будет одинаков, но с & быстрее, потому что & - не ветвление, нету jmp в асм.
&& нужен чтобы отсечь дальнейшие проверки,
например
obj.is_circle() && obj.get_radius() != 0
в таком случае get_radius не будет вызываться если объект не круг.С числами лучше использовать & потому что нет множественных ветвлений и branch predictor не задействуется.
Можете сами проверить конечно же производительность.
а отказаться как? не нашел как поставить в игнор, чтобы это говно в ленте не возникало
а напомните пожалуйста, ченжлоги различного софта мы теперь на хабре должны читать?
а для Apple чем кончилась?
а что насчет углеродного следа, который увеличится с этой слежкой за частными хранилищами? надо на них зеленых натравить
с приходом яндекса сначала стало лучше - больше конкуренции, ниже цена. А потом они выкупили рутакси, взвинтили цены, я стал пользоваться автобусом, а многим таксистам пришлось вернуться назад в бизнес.
Отнюдь. Скорее даёт больше способов прострелить себе ногу. Именно поэтому С популярнее чем С++.
Так новые языки наоборот облегчают программирование и ускоряют процесс приведения задумки в реальность. Если вы старый С++ динозавр, самое время попробовать новые языки.
При нём ростелеком превратился в уг. ВК ждёт то же самое?
поэтому я не вакцинируюсь. Или это другое?
а война habr и vc уже началась?
код еще может быть оптимизирован с учетом instruction-level параллелизма.
Еще например
vr > -17 && vr < 16 && vg > -17 && vg < 16 &&
нужно заменять на & для ускоренияVSCode
все высоконагруженные алгоритмы связанные с рендерингом встроены в движок. В юнити есть даже DOTS. Тебе даже с BSP деревьями не надо иметь дел. Юзеру остаётся управлять только логикой. Если ты изобретаешь велосипеды на avx, скорее всего ты не используешь движок по назначению. Более того, если твоя игра жрёт проц, значит архитектура твоей игры убогая, и тебе надо отправляться на перестажировку, как это стало с Battlefield 2042, которая жрёт 80% проца i7-9700K при этом количество объектов в мире можно сосчитать на пальцах, и С++ его не спас, наоборот критические баги фиксятся неделями, потому что очевидно что игра компилится долго , и хотфиксы не залить. В итоге 80% юзер базы уже отвалилось. Это всё что надо знать про написание ААА игр на С++ в 2021.
Если бы С++ был отличен, то UE пользователи на нем бы и писали , но они предпочитают blueprints.
Если 20 лет назад тебе надо было писать сырой код OpenGL то сейчас надо управлять лишь логикой игры, и С++ для этих целей не подходит.
Вот еще пара относительно новых движков, которые так же используют C# - Xenko и FLAX.
Ставлю на 6.0 - 6.5 оценку IMDB. Кстати почему есть ставки на спорт, но нет на оценку IMDB ?
Не взлетит как и все фильмы, где молодой герой в прошлом возвращается старым в новом фильме и даёт всем жару. Ну нету уже задора в потускневших глазах Киану =(
Как удобно ютуб отключил дизлайки. Теперь вы не сможете накидать дизлайков в трейлер после выхода фильма, чтобы отобрать миллионы прибыли.