В маленьких ИТ компаниях вывозят за счет хорошей инженерной работы, а не человеко-часов. Только им никто не дает нормальных денег для развития, а если дают, то начинают все контролировать и заводят в высококонкурентную область, где компания закрывается или продается.
Половина статьи про UB и проблемы использования. На самом деле все не так плохо, достаточно полностью переделать архитектуру и корутины заработают без боли и страданий)
Я добавлял корутины поверх уже готовой системы тасков и промисов. Тогда уже использовались правильные примитивы синхронизаций типа зависимостей между тасками, асинхронный мьютекс, что-то похожее на семафор и тд.
Когда-то выбрал AngelScript и поначалу все было нормально, но потом вылезли баги в Linux/Android, долго добавляли Mac на arm. В итоге решил что скрипты будут только для ускорения разработки.
По ИИ: смотрел как племянник играет в мобильный файтинг, показывают что подбирают противника равного по уровню, но он выносится с трех ударов. Я сразу сказал что это бот, но не убедил. В общем имитация интеллекта работает для определенной возрастной группы, а тем кто перерос уже скучно играть.
Мне заплатили премию спустя полгода после увольнения. Только эта была крипта компании и на момент выплаты стоила $200, спустя пару месяцев уже $0.001. Все что нужно знать про премии криптой)
Хотя на премию битками я год жил пока восстанавливался после травмы)
Обычно в конце фрейма, перед тем как данные уходят в видео карту у нас остаются свободные потоки, которые можно временно сделать такими «цепочками» и грузить ресурсы когда точно знаем, что не мешаем игре.
А как же поддержка 360Гц мониторов? Там нет времени в конце кадра)
Пика использования такой подход достиг в движках и играх Naughty Dog, которые упоролись и сделали воркеры аж на fibers
Сейчас уже корутины в С++ завезли, больше никакого callback hell.
Я когда-то впечатлился idTech и тоже сделал себе движок на тасках. Пока нет ошибок все хорошо работает, а как только одно из звеньев цепочки тасков ломается, то система приходит в неопределенное состояние и начинаются дедлоки тасков - когда таск ждет успешного завершения другого, который уже завершился с ошибкой. Нужно не забывать обрабатывать все варианты, а компилятор в этом не помошник, в отличие от кодов ошибок с nodiscard например.
Тяп-ляп хорошо, когда все в отдельном модуле. В лучшие времена этот модуль выкинут и перепишут. Проблема начинается, когда нужно протащить костыли через весь код, вот за такое надо бить по рукам.
Я пробовал смотреть 3D фильмы в VR и меня сразу же укачало от трясущейся камеры, так что вариант только для телеков.
С восстановлением глубины может быть другая проблема - искажение масштабов. Нейронка похоже ищет дальнюю точку в кадре и строит параллакс до нее, хотя в реальности объем чувствуется только на небольшом расстоянии в 5-10м. Теперь это не огромный звездолет, а какая-то муха перед глазами)
Кстати, я когда-то работал с лидом из гугла и было норм. На каждую таску я сам писал себе ТЗ и потом его быстро согласовывали, было удобно, но ни на одной другой работе такого не было. Но вот один раз он попросил перекомитить всю таску и сделать в 2 раза больше коммитов...
В маленьких ИТ компаниях вывозят за счет хорошей инженерной работы, а не человеко-часов. Только им никто не дает нормальных денег для развития, а если дают, то начинают все контролировать и заводят в высококонкурентную область, где компания закрывается или продается.
Я заметил что RADV драйвер на линуксе работает быстрее AMDшного. Вот если его портируют на винду, тогда можно будет сравнить влияние ОС.
Половина статьи про UB и проблемы использования. На самом деле все не так плохо, достаточно полностью переделать архитектуру и корутины заработают без боли и страданий)
Я добавлял корутины поверх уже готовой системы тасков и промисов. Тогда уже использовались правильные примитивы синхронизаций типа зависимостей между тасками, асинхронный мьютекс, что-то похожее на семафор и тд.
Когда-то выбрал AngelScript и поначалу все было нормально, но потом вылезли баги в Linux/Android, долго добавляли Mac на arm. В итоге решил что скрипты будут только для ускорения разработки.
По ИИ: смотрел как племянник играет в мобильный файтинг, показывают что подбирают противника равного по уровню, но он выносится с трех ударов. Я сразу сказал что это бот, но не убедил. В общем имитация интеллекта работает для определенной возрастной группы, а тем кто перерос уже скучно играть.
Тест ни о чем, видно же что частоты ГПУ разные. Надо было выставить фиксированные частоты и потом тестировать.
Мне заплатили премию спустя полгода после увольнения. Только эта была крипта компании и на момент выплаты стоила $200, спустя пару месяцев уже $0.001. Все что нужно знать про премии криптой)
Хотя на премию битками я год жил пока восстанавливался после травмы)
А когда контроффер на х3 не срабатывал?
А как же поддержка 360Гц мониторов? Там нет времени в конце кадра)
Сейчас уже корутины в С++ завезли, больше никакого callback hell.
Я когда-то впечатлился idTech и тоже сделал себе движок на тасках. Пока нет ошибок все хорошо работает, а как только одно из звеньев цепочки тасков ломается, то система приходит в неопределенное состояние и начинаются дедлоки тасков - когда таск ждет успешного завершения другого, который уже завершился с ошибкой. Нужно не забывать обрабатывать все варианты, а компилятор в этом не помошник, в отличие от кодов ошибок с nodiscard например.
Если посмотреть исходники UE, то про AVX512 там никто не слышал)
Вот у меня апгрейд - взял мини-пк за 40к, который компилирует быстрее моего староватого райзен 9, а места занимает намного меньше.
Тяп-ляп хорошо, когда все в отдельном модуле. В лучшие времена этот модуль выкинут и перепишут. Проблема начинается, когда нужно протащить костыли через весь код, вот за такое надо бить по рукам.
Это было 15 лет назад, сейчас уже школьники кодят лучше джунов.
Это L2 кэш, который используется для хранения промежуточных данных в TBDR архитектуре.
Еще бы пример как на github CI это настроить.
Я пробовал смотреть 3D фильмы в VR и меня сразу же укачало от трясущейся камеры, так что вариант только для телеков.
С восстановлением глубины может быть другая проблема - искажение масштабов. Нейронка похоже ищет дальнюю точку в кадре и строит параллакс до нее, хотя в реальности объем чувствуется только на небольшом расстоянии в 5-10м. Теперь это не огромный звездолет, а какая-то муха перед глазами)
Оптимизация по ILP будет полезна для новых интелов, где нет гипертрединга.
Еще вместо
if (mask == 0) break;
можно попробовать:
if (mask != 0) [[likely]] {} else break;
Это дает +10% за счет более точных предсказаний ветвления. [[unlikely]] не сработает, так как слишком короткий код, поэтому приходится хитрить.
Еще clang чуть лучше оптимизирует, чем MSVC, тоже +10%.
То есть если вставил либу в проект, то попал в титры, а если написал либу, то нет?
Кстати, я когда-то работал с лидом из гугла и было норм. На каждую таску я сам писал себе ТЗ и потом его быстро согласовывали, было удобно, но ни на одной другой работе такого не было. Но вот один раз он попросил перекомитить всю таску и сделать в 2 раза больше коммитов...
На одном проекте я 3 месяца доступ к Жире получал, потому что тимлид похренист)
Может и не работал над прям крупными, но везде все было разбито на модули и не нужно изучать миллион строк, чтобы сделать первую таску.
Точно не помню, давно это обсуждали. Вроде бы объяснение было - так принято / было принято в гугле.
Для маленькой компании - плохо, да и нет там таких задач чтобы долго изучать.