|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
tip78Посчитал всю логику сразу... Посчитал все данные сразу... Кэш счастлив. В итоге DOD выдаёт *до 6 раз* лучшую производительность (в играх, CSS-анимации, и ещё где-то). После таких громких заявлений остаётся только удивляться почему эти игры имеют системные требования, превосходящие размер кэша на пару-тройку порядков. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 13:59 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Я тебе авторитетно могу сказать, что ООП вообще не нужен ни одному пользователю ПО, любого ПО. Я не считаю, что ООП подход сам по себе ведёт к потере производительности. Единственный аргумент в плане производительности привёл пользователь tip78 . И это DOD. Но я боюсь, что тут есть какие-то подводные камни. Всё зависит от алгоритмов игровой логики о которых я могу только догадываться. Зачеркнул про авторитетность. Что мы в 90х живем? Не переживай. Про авторитетность — это был обычный литературный приём русского языка. С уголовными авторитетами не имеет ничего общего. Хотя и жаль, что я тогда, в 90-х, не был среди них. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 14:05 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
petrav Код: plaintext 1. 2.
И вызывай init_pig() когда хочешь, а не когда компилятор по высоким принципам ООП захочет. И считай что угодно и в той позиции какую захочешь. И как быстро захочешь. Или долго. :) Я ванговал смерть ООП различными доводами 20908037 . Но ты просто переплюнул меня ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 14:38 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Просто кое-кто настолько ушёл в эмпиреи, что не в курсе, что синтаксис foo.bar() это просто сахар для bar(&foo)... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 14:41 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
mayton petrav Код: plaintext 1. 2.
И вызывай init_pig() когда хочешь, а не когда компилятор по высоким принципам ООП захочет. И считай что угодно и в той позиции какую захочешь. И как быстро захочешь. Или долго. :) Я ванговал смерть ООП различными доводами 20908037 . )) прикольная тема) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 14:51 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
petrav tip78 главный алгоритм - 60 раз в секунду показать одно и тоже всё остальное - на заднем плане пропущено... вообще-то он таки сильно упрощает сопровождение и когда во время создания класса можно проверить что угодно, посчитать что угодно, изменить что угодно - тоже роляет Да я тебя умоляю. Это можно всё решить и без ООП. Код: plaintext 1. 2.
И вызывай init_pig() когда хочешь, а не когда компилятор по высоким принципам ООП захочет. И считай что угодно и в той позиции какую захочешь. И как быстро захочешь. Или долго. :) Придётся отдельно звать init_pig(), в доках писать, чтобы не забыли позвать init_pig(), придумывать deinit_pig() и прочий гемор... зачем? Когда есть классы. А компилятор всю твою писанину всё равно разложит по простейшим функциям. Это всё только для людей. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 14:55 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov tip78Посчитал всю логику сразу... Посчитал все данные сразу... Кэш счастлив. В итоге DOD выдаёт *до 6 раз* лучшую производительность (в играх, CSS-анимации, и ещё где-то). После таких громких заявлений остаётся только удивляться почему эти игры имеют системные требования, превосходящие размер кэша на пару-тройку порядков. вряд ли именно эти игры тема то рабочая ну и от кач-ва разрабов же ещё зависит параллелить игры тоже надо уметь ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 14:57 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
tip78вряд ли именно *эти* игры А, ну то есть в теории DoD работает, а на практике никем никогда не используется. Ок... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 15:05 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
tip78 А компилятор всю твою писанину всё равно разложит по простейшим функциям. Это просто чудесно. Самое забавное что этот-же тезис приводился и на лекциях по Haskell. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 15:06 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov tip78вряд ли именно *эти* игры А, ну то есть в теории DoD работает, а на практике никем никогда не используется. Ок... да, вообще никем не используется mayton tip78 А компилятор всю твою писанину всё равно разложит по простейшим функциям. Это просто чудесно. Самое забавное что этот-же тезис приводился и на лекциях по Haskell. ну так везде компиляторы раскладывают в асм, а там ооп нет, там всё элементарно ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 16:39 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
tip78да, вообще никем не используется Как я и говорил: все ссылки о том какая крутая вещь этот дод и ни одной на "игра Х работает так быстро потому что в ней использовали дод". Хоть что-нибудь из этого использует дод? И если нет, то почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 16:47 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Сорцы Doom https://github.com/id-Software/DOOM ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 17:29 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov tip78да, вообще никем не используется работает так быстро потому что в ней использовали дод". Хоть что-нибудь из этого использует дод? И если нет, то почему? ну вот же на ютубе видео есть его с конфы он пока не очень распространён, это надо понимать, потому что парадигма совсем другая и все движки надо переписывать да и знатоков пока мало так а ты что, не согласен с тем, что процу приятнее SoA ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 17:47 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
tip78он пока не очень распространён, это надо понимать, потому что парадигма совсем другая и все движки надо переписывать да и знатоков пока мало Не так давно тут кое-то топил за "Вулкан - лучший движок во вселенной, который убьёт все остальные". Вулкан использует ДоД? И если нет, то почему? tip78так а ты что, не согласен с тем, что процу приятнее SoA ? Я не согласен с тем, что игровые данные могут влезть в кэш. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 17:53 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Хоть что-нибудь из этого использует дод? И если нет, то почему? Сильно сомневаюсь что нам предоставят возможность смотреть сорцы современных игр. Игры - это дорогое ноу-хау. И разрабы не хотят давать возможность конкурентам копи-пастить их идеи и быстро внедрять. Реверс-инжинеринг наверное возможен но по срокам скорее всего не уложится в бизнес-планы современного геймдева. Иногда недостаточно даже сорцов. Нужна сопроводительная документация и ответы на вопросы от создателей. Что уж тут говорить о реверсе. Однако мы можем посмотреть в игровые движки. Они - достаточно современные и среди них есть опенсорцные. И по ним тоже сделать какие-то суждения о DoD. Вот тут я 5 штук нашел https://dzone.com/articles/top-5-free-and-open-source-game-engines-you-should ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 18:39 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Я не согласен с тем, что игровые данные могут влезть в кэш. А они и не влезают никогда. В кеш вообще ничего не влезает. Но мы в топике скорее говорим о проценте или о процентиле удачных попаданий чтения-записи кеш-линий игровым алгоритмом настолько, что дальнейшее например удвоение кеша - не удваивало-бы перформанс. А это означает что на кривой оптимизации мы вышли на тот уровень когда уже "можно остановится". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 18:42 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
maytonВот тут я 5 штук нашел Забавно, что Вулкана-то между ними как раз нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 18:57 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonВот тут я 5 штук нашел Забавно, что Вулкана-то между ними как раз нет. Вулкан это не то. Это еще более LowLevel. Насколько я понимаю это аналог OpenGL/Direct3d. И все игровые движки дёргают API этого вулкана а он уже дергает конкретные методы драйвера видеокарты чтоб положить в конвейер 3D модельки. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 19:00 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
mayton Dimitry Sibiryakov Я не согласен с тем, что игровые данные могут влезть в кэш. А они и не влезают никогда. В кеш вообще ничего не влезает. Но мы в топике скорее говорим о проценте или о процентиле удачных попаданий чтения-записи кеш-линий игровым алгоритмом настолько, что дальнейшее например удвоение кеша - не удваивало-бы перформанс. А это означает что на кривой оптимизации мы вышли на тот уровень когда уже "можно остановится". Тут скорее Сибиряков имеет в виду, что ДоД хорош в теоритических задачах. Типа в массиве структур посчитать сумму одного поля. Мы переделываем массив структур на структуру массивов и вуаля — рост в шесть раз! Но на практических задачах разработки игр это не работает. Нет таких алгоритмов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 19:01 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
Если я правильно понял, этот ДоД вообще узко специфическая вещь. Если у нас есть данные о миллионе звёзд и на каждую звезду по сотне характеристик. И нам нужно пробежаться по одной характеристике для всех звёзд, то, конечно, ДоД хорош. Более того, эти массивы характеристик и на винчестере тогда должны лежать отдельно, а не структурами. Но, блин, работает ли это в логике игр? Представим себе у нас на экране сотня игроков, которые мочат друг друга. Какая такая задача может стоять, что бы как можно быстрее пробежаться по массиву из ста элементов и посчитать одну характеристику каждого игрока? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 19:19 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
mayton Вулкан это не то. Это еще более LowLevel. Насколько я понимаю это аналог OpenGL/Direct3d. он замена directX для линух ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 19:23 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
petrav Но, блин, работает ли это в логике игр? Представим себе у нас на экране сотня игроков, которые мочат друг друга. Какая такая задача может стоять, что бы как можно быстрее пробежаться по массиву из ста элементов и посчитать одну характеристику каждого игрока? не теми категориями мыслишь... за 1 секунду 60 раз надо картинку просчитать за 1 секунду она будет фактически статичная а технически она и 2-3-5-10 секунд будет иметь повторяющиеся элементы ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 19:25 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
petrav, да. Я знаком с Data-Oriented-Design не со стороны геймдева а со стороны баз данных или BigData. Например если у нас есть бизнес-аналитика по fundamentals крупных компаний то выгрузка такой аналитики будет представлять собой очень широкие и разрежённые таблицы (порядка 500-1000 колонок) и в традиционном способе хранения (если их хранить как data-rows) - выборка будет неэффективной. Примерно так-же как со звездами. Дата-аналитик может запросить например 1-ю колонку и 500-ю и 900-ю. Специально для таких хитрых запросов данные разворачивают в векторы примитивов (по сути поворачивают таблицу набок) и сжимают чем-то вроде Gzip/Snappy и далее - уже считывают с диска сегменты 1/500/900 колонок. И вместо например 1 Терабайта спокойно обрабатывают 1 Гигабайт что само по себе в тыщу раз быстрее. Для этого есть спецом форматы хранения Apache Parquet, Apache ORC. И форматы эти на 99% read-only. Тоесть их 1 раз создают чтобы хранить всю жизнь без модификаций. Тоесть они - не для транзакций. А просто для сбора сведений и всяких там машинных обучений и поиска закономернойстей между колонками. В базах данных (Oracle 11g) тоже была введена попытка такого колончатого хранения инфы но я к тому времени уже не админил ораклы и не успел с этой техникой плотно поработать. Поэтому как оно там щас работает - я не знаю. Так что не только геймдевом одним дышит DoD. Вообще мне кажется DoD - это не про С++ а просто про оптимизацию доступа к данным. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 19:36 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
tip78 petrav Но, блин, работает ли это в логике игр? Представим себе у нас на экране сотня игроков, которые мочат друг друга. Какая такая задача может стоять, что бы как можно быстрее пробежаться по массиву из ста элементов и посчитать одну характеристику каждого игрока? не теми категориями мыслишь... за 1 секунду 60 раз надо картинку просчитать за 1 секунду она будет фактически статичная а технически она и 2-3-5-10 секунд будет иметь повторяющиеся элементы Ты бы пример алгоритмов привёл. А так я даже не понял про какую категорию ты говоришь. PS: Когда я серьёзно играл в WoW пинг 30 миллисекунд считался критическим. Как-то к нам в гильдию чувак написал резюме. Его спросили: под вами загорелась лужа, за какое время вы из неё выберитесь учитывая ваш класс? Он ответил за 0.3 секунды. Ему сказали: вы что с ума сошли, нужно отвечать мгновенно, в приёме отказано. А у вас целую секунду картинка статическая. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 19:38 |
|
Изучение C++ после java
|
|||
---|---|---|---|
#18+
petrav Ты бы пример алгоритмов привёл. Что там приводить? Это было даже до шейдеров. Вся отрисовка в OpenGL происходит так: 1. фаза - создание меша или массива точек фигур в видеокарту Код: plaintext 1.
2. фаза - команды отрисовки всего что отправили через Код: plaintext 1.
Какой тут нафиг ООП? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 20:23 |
|
|
start [/forum/topic.php?fid=57&msg=40038315&tid=2017266]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
142ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 244ms |
total: | 506ms |
0 / 0 |