Это собственно то, о чём мы с Ксероксом давно уже твердим - асинхронная мульипоточность может даже снижать производительность. Ну или просто не давать какого-то особого прироста. Хотя с точки зрения операционной системы раскидать задачи по ядрам - вполне выгодная тема. Ну и разумеется это хорошо для задач, которые сбалансированно параллелятся. Но игры к ним не относятся.
Большинство современных процессоров рассчитаны именно на многопоточность. Однопоточность даже у топовых процев сосёт (если только не разгонять их до каких то безумных значений под жидким азотом). Наверное ресурсоёмкие задачи лучше распределять на несколько ядер. А вот простые можно и в одном потоке делать.
Цитата:
Дядя Миша писал: Это собственно то, о чём мы с Ксероксом давно уже твердим - асинхронная мульипоточность может даже снижать производительность
Это зависит скорее от реализации, например Автодеск и тима Блендера в один голос говорят что нет никакого смысла во многопоточности для расчета физики жидкостей, т.к. оно будет даже медленнее. И при этом есть РеалФлов который прекрасно в этой многопоточности работает и работает намного быстрее, в то время как все конкуренты считают в одном потоке. Так что если снижается производительность, это вероятнее проблема алгоритма, а не многопоточности.
Цитата:
Дядя Миша писал: Ну и разумеется это хорошо для задач, которые сбалансированно параллелятся. Но игры к ним не относятся.
Ну вот да, если в самом движке ничего нельзя параллелить, то какой смысл в многопоточности? Хотя сильно сомневаюсь что там прямо вообще нечего параллелить. Может трасса поэтому фризы у тебя давала?
__________________ Иван Топорышкин пошел на охоту,
С ним пудель пошел, перепрыгнув забор,
Иван, как бревно провалился в болото,
А пудель в реке утонул, как топор.
Ну ты же понимаешь что Core i9-13900K с 4090 на борту, работающем на 5,5 ГГц, памятью на ДДР 5 и конским кешем хоть и с одним ядром, это совсем не тоже самое что ваши задрипанные пентиумы 2010 года ? Там наверное ещё и водянку до кучи поставили. Объективность теста весьма сомнительная, а то что с консолями сравнивают так это вообще до уровня абсурда. И кстати да SMT у АМД вроде как.
__________________ Иван Топорышкин пошел на охоту,
С ним пудель пошел, перепрыгнув забор,
Иван, как бревно провалился в болото,
А пудель в реке утонул, как топор.
В итоге получается, что миф о концептуальной невозможности запуска современных игр на CPU с одним ядром был целиком и полностью развенчан. В подавляющем большинстве проектов средняя частота кадров была выше 30 консольных FPS. Даже вышедшие месяц назад тайтлы идут вполне себе бодро.
https://www.youtube.com/watch?v=ypDcl0KHSs8
Я тоже в этом не разбираюсь. Не знаю что здесь значит "бодро", если время кадра так скачет и игра статтерит, больно в такое играть. Лично мне это видео говорит скорее о том что не стоит отключать ядра
Дядя Миша писал: Я понял. Ты вообще не понимаешь что такое распараллеливание задач и как оно работает. Не вижу смысла продолжать дискуссию.
А ты понимаешь? Почитай комментарии под твоей статьёй, и все поймешь.
__________________ Иван Топорышкин пошел на охоту,
С ним пудель пошел, перепрыгнув забор,
Иван, как бревно провалился в болото,
А пудель в реке утонул, как топор.
Если на соседнее ядро привязан стриминг - конечно будет статерить.
Впрочем сталкер ухитрялся это делать независимо от кол-ва ядер.
Ну ладно оригинал кажется вообще был одноядерный. Так его недавно переписали и чтожы? Да всё так же логает
FiEctro писал: Так что если снижается производительность, это вероятнее проблема алгоритма, а не многопоточности.
Ну это очевидное следствие, не всё можно распараллелить. Вот в играх для этого как раз и приходится дико извращаться, чтобы в линейном алгоритме выцепить какие-то кусочки мелкие, которые можно раскидать на несколько разных потоков. То есть да, концепция многопоточности на игры очень плохо ложится, в отличие от, например, каких-нибудь вычислений или брутфорса хэшей, или обработки изображений.
Добавлено 29-08-2023 в 01:09:
Но я бы не смешивал в одно целое асинхронность и многопоточность. Асинхронность может быть реализована и в рамках только одного потока, например, корутинами. Да и в целом вот как раз таки асинхронность в играх неплохо пригождается, когда нужно что-то довольно тяжелое-долгое сделать, не вызвав при этом статтеры или просадку фреймтайма.
Я не эксперт в этом конечно, но имхо делать однопоточными всякие игры симуляторы, стратегии с тысячами юнитов или вообще мясные шутаны с теми же тысячами врагов такая себе идея, если прям кучи расчетов то как по мне можно уперется в одно ядро, тут наоборот неплохо бы иметь какую никакую расширяемость.
Интересно вот, есть такие игры как Факторио и Римворлд, почему первый хорошо работает, второй лагает как говно когда там сотни врагов нападают разом да и вообще сам лейт гейм лагучий? Хотя в факторио если так подумать то тоже куча сущностей что что-то делают, руда на конвеерах, заводики, дроны и поезда что это возят, хотя я не в курсе как у них там многопоточность, есть, нету.
Chyvachok писал: Интересно вот, есть такие игры как Факторио и Римворлд, почему первый хорошо работает, второй лагает как говно когда там сотни врагов нападают разом да и вообще сам лейт гейм лагучий? Хотя в факторио если так подумать то тоже куча сущностей что что-то делают, руда на конвеерах, заводики, дроны и поезда что это возят, хотя я не в курсе как у них там многопоточность, есть, нету.
__________________ Иван Топорышкин пошел на охоту,
С ним пудель пошел, перепрыгнув забор,
Иван, как бревно провалился в болото,
А пудель в реке утонул, как топор.
В играх частенько большие просадки от партиклей различных, те же взрывы.
__________________ Иван Топорышкин пошел на охоту,
С ним пудель пошел, перепрыгнув забор,
Иван, как бревно провалился в болото,
А пудель в реке утонул, как топор.