Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7 8 9   вперед  Ctrl      все
 Re: Изучение C++ после java  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

tip78
Посчитал всю логику сразу... Посчитал все данные сразу... Кэш счастлив.
В итоге DOD выдаёт *до 6 раз* лучшую производительность (в играх, CSS-анимации, и ещё где-то).

После таких громких заявлений остаётся только удивляться почему эти игры имеют системные
требования, превосходящие размер кэша на пару-тройку порядков.

Posted via ActualForum NNTP Server 1.5

23 янв 21, 13:59    [22268126]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
petrav
Member

Откуда:
Сообщений: 2861
mayton
petrav
пропущено...

Я тебе авторитетно могу сказать, что ООП вообще не нужен ни одному пользователю ПО, любого ПО.

Я не считаю, что ООП подход сам по себе ведёт к потере производительности. Единственный аргумент в плане производительности привёл пользователь tip78. И это DOD. Но я боюсь, что тут есть какие-то подводные камни. Всё зависит от алгоритмов игровой логики о которых я могу только догадываться.


Зачеркнул про авторитетность. Что мы в 90х живем?

Не переживай. Про авторитетность — это был обычный литературный приём русского языка. С уголовными авторитетами не имеет ничего общего. Хотя и жаль, что я тогда, в 90-х, не был среди них.
23 янв 21, 14:05    [22268127]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
mayton
Member

Откуда: loopback
Сообщений: 51018
petrav

struct MyPig pig;
init_pig(&pig);

И вызывай init_pig() когда хочешь, а не когда компилятор по высоким принципам ООП захочет. И считай что угодно и в той позиции какую захочешь. И как быстро захочешь. Или долго. :)

Я ванговал смерть ООП различными доводами 20908037.

Но ты просто переплюнул меня
23 янв 21, 14:38    [22268134]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

Просто кое-кто настолько ушёл в эмпиреи, что не в курсе, что синтаксис foo.bar() это
просто сахар для bar(&foo)...

Posted via ActualForum NNTP Server 1.5

23 янв 21, 14:41    [22268136]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
mayton
petrav

struct MyPig pig;
init_pig(&pig);

И вызывай init_pig() когда хочешь, а не когда компилятор по высоким принципам ООП захочет. И считай что угодно и в той позиции какую захочешь. И как быстро захочешь. Или долго. :)

Я ванговал смерть ООП различными доводами 20908037.

)) прикольная тема)
23 янв 21, 14:51    [22268140]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
tip78
Member

Откуда: Москва
Сообщений: 1266
petrav
tip78
главный алгоритм - 60 раз в секунду показать одно и тоже
всё остальное - на заднем плане
пропущено...

вообще-то он таки сильно упрощает сопровождение
и когда во время создания класса можно проверить что угодно, посчитать что угодно, изменить что угодно - тоже роляет

Да я тебя умоляю. Это можно всё решить и без ООП.

struct MyPig pig;
init_pig(&pig);


И вызывай init_pig() когда хочешь, а не когда компилятор по высоким принципам ООП захочет. И считай что угодно и в той позиции какую захочешь. И как быстро захочешь. Или долго. :)

Придётся отдельно звать init_pig(), в доках писать, чтобы не забыли позвать init_pig(), придумывать deinit_pig() и прочий гемор...
зачем? Когда есть классы. А компилятор всю твою писанину всё равно разложит по простейшим функциям.
Это всё только для людей.
23 янв 21, 14:55    [22268143]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
tip78
Member

Откуда: Москва
Сообщений: 1266
Dimitry Sibiryakov
tip78
Посчитал всю логику сразу... Посчитал все данные сразу... Кэш счастлив.
В итоге DOD выдаёт *до 6 раз* лучшую производительность (в играх, CSS-анимации, и ещё где-то).

После таких громких заявлений остаётся только удивляться почему эти игры имеют системные
требования, превосходящие размер кэша на пару-тройку порядков.

вряд ли именно эти игры
тема то рабочая
ну и от кач-ва разрабов же ещё зависит
параллелить игры тоже надо уметь

Сообщение было отредактировано: 23 янв 21, 14:51
23 янв 21, 14:57    [22268145]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

tip78
вряд ли именно *эти* игры

А, ну то есть в теории DoD работает, а на практике никем никогда не используется. Ок...

Posted via ActualForum NNTP Server 1.5

23 янв 21, 15:05    [22268150]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
mayton
Member

Откуда: loopback
Сообщений: 51018
tip78
А компилятор всю твою писанину всё равно разложит по простейшим функциям.

Это просто чудесно. Самое забавное что этот-же тезис приводился и на лекциях по Haskell.
23 янв 21, 15:06    [22268151]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
tip78
Member

Откуда: Москва
Сообщений: 1266
Dimitry Sibiryakov
tip78
вряд ли именно *эти* игры

А, ну то есть в теории DoD работает, а на практике никем никогда не используется. Ок...

да, вообще никем не используется
mayton
tip78
А компилятор всю твою писанину всё равно разложит по простейшим функциям.

Это просто чудесно. Самое забавное что этот-же тезис приводился и на лекциях по Haskell.

ну так везде компиляторы раскладывают в асм, а там ооп нет, там всё элементарно

Сообщение было отредактировано: 23 янв 21, 16:32
23 янв 21, 16:39    [22268173]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921
tip78
да, вообще никем не используется
Как я и говорил: все ссылки о том какая крутая вещь этот дод и ни одной на "игра Х
работает так быстро потому что в ней использовали дод".

Хоть что-нибудь из этого использует дод? И если нет, то почему?

Сообщение было отредактировано: 23 янв 21, 16:43
23 янв 21, 16:47    [22268176]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
mayton
Member

Откуда: loopback
Сообщений: 51018
Сорцы Doom https://github.com/id-Software/DOOM
23 янв 21, 17:29    [22268180]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
tip78
Member

Откуда: Москва
Сообщений: 1266
Dimitry Sibiryakov
tip78
да, вообще никем не используется
Как я и говорил: все ссылки о том какая крутая вещь этот дод и ни одной на "игра Х
работает так быстро потому что в ней использовали дод".

Хоть что-нибудь из этого использует дод? И если нет, то почему?

ну вот же
на ютубе видео есть его с конфы
он пока не очень распространён, это надо понимать, потому что парадигма совсем другая и все движки надо переписывать
да и знатоков пока мало

так а ты что, не согласен с тем, что процу приятнее SoA ?

Сообщение было отредактировано: 23 янв 21, 17:40
23 янв 21, 17:47    [22268187]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

tip78
он пока не очень распространён, это надо понимать, потому что парадигма совсем другая и
все движки надо переписывать да и знатоков пока мало

Не так давно тут кое-то топил за "Вулкан - лучший движок во вселенной, который убьёт все
остальные". Вулкан использует ДоД? И если нет, то почему?

tip78
так а ты что, не согласен с тем, что процу приятнее SoA ?

Я не согласен с тем, что игровые данные могут влезть в кэш.

Posted via ActualForum NNTP Server 1.5

23 янв 21, 17:53    [22268188]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
mayton
Member

Откуда: loopback
Сообщений: 51018
Dimitry Sibiryakov

Хоть что-нибудь из этого использует дод? И если нет, то почему?

Сильно сомневаюсь что нам предоставят возможность смотреть сорцы современных
игр. Игры - это дорогое ноу-хау. И разрабы не хотят давать возможность конкурентам
копи-пастить их идеи и быстро внедрять.

Реверс-инжинеринг наверное возможен но по срокам скорее всего не уложится в бизнес-планы
современного геймдева. Иногда недостаточно даже сорцов. Нужна сопроводительная документация
и ответы на вопросы от создателей. Что уж тут говорить о реверсе.

Однако мы можем посмотреть в игровые движки. Они - достаточно современные и среди них есть
опенсорцные. И по ним тоже сделать какие-то суждения о DoD.

Вот тут я 5 штук нашел https://dzone.com/articles/top-5-free-and-open-source-game-engines-you-should
23 янв 21, 18:39    [22268193]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
mayton
Member

Откуда: loopback
Сообщений: 51018
Dimitry Sibiryakov

Я не согласен с тем, что игровые данные могут влезть в кэш.

А они и не влезают никогда. В кеш вообще ничего не влезает. Но мы в топике
скорее говорим о проценте или о процентиле удачных попаданий чтения-записи кеш-линий игровым
алгоритмом настолько, что дальнейшее например удвоение кеша - не удваивало-бы перформанс.

А это означает что на кривой оптимизации мы вышли на тот уровень
когда уже "можно остановится".
23 янв 21, 18:42    [22268194]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

mayton
Вот тут я 5 штук нашел

Забавно, что Вулкана-то между ними как раз нет.

Posted via ActualForum NNTP Server 1.5

23 янв 21, 18:57    [22268198]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
mayton
Member

Откуда: loopback
Сообщений: 51018
Dimitry Sibiryakov

mayton
Вот тут я 5 штук нашел

Забавно, что Вулкана-то между ними как раз нет.

Вулкан это не то. Это еще более LowLevel. Насколько я понимаю это аналог OpenGL/Direct3d.
И все игровые движки дёргают API этого вулкана а он уже дергает конкретные методы
драйвера видеокарты чтоб положить в конвейер 3D модельки.
23 янв 21, 19:00    [22268199]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
petrav
Member

Откуда:
Сообщений: 2861
mayton
Dimitry Sibiryakov

Я не согласен с тем, что игровые данные могут влезть в кэш.

А они и не влезают никогда. В кеш вообще ничего не влезает. Но мы в топике
скорее говорим о проценте или о процентиле удачных попаданий чтения-записи кеш-линий игровым
алгоритмом настолько, что дальнейшее например удвоение кеша - не удваивало-бы перформанс.

А это означает что на кривой оптимизации мы вышли на тот уровень
когда уже "можно остановится".

Тут скорее Сибиряков имеет в виду, что ДоД хорош в теоритических задачах. Типа в массиве структур посчитать сумму одного поля. Мы переделываем массив структур на структуру массивов и вуаля — рост в шесть раз! Но на практических задачах разработки игр это не работает. Нет таких алгоритмов.
23 янв 21, 19:01    [22268200]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
petrav
Member

Откуда:
Сообщений: 2861
Если я правильно понял, этот ДоД вообще узко специфическая вещь. Если у нас есть данные о миллионе звёзд и на каждую звезду по сотне характеристик. И нам нужно пробежаться по одной характеристике для всех звёзд, то, конечно, ДоД хорош. Более того, эти массивы характеристик и на винчестере тогда должны лежать отдельно, а не структурами.

Но, блин, работает ли это в логике игр? Представим себе у нас на экране сотня игроков, которые мочат друг друга. Какая такая задача может стоять, что бы как можно быстрее пробежаться по массиву из ста элементов и посчитать одну характеристику каждого игрока?
23 янв 21, 19:19    [22268207]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
tip78
Member

Откуда: Москва
Сообщений: 1266
mayton
Вулкан это не то. Это еще более LowLevel. Насколько я понимаю это аналог OpenGL/Direct3d.

он замена directX для линух
23 янв 21, 19:23    [22268209]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
tip78
Member

Откуда: Москва
Сообщений: 1266
petrav
Но, блин, работает ли это в логике игр? Представим себе у нас на экране сотня игроков, которые мочат друг друга. Какая такая задача может стоять, что бы как можно быстрее пробежаться по массиву из ста элементов и посчитать одну характеристику каждого игрока?

не теми категориями мыслишь... за 1 секунду 60 раз надо картинку просчитать
за 1 секунду она будет фактически статичная
а технически она и 2-3-5-10 секунд будет иметь повторяющиеся элементы

Сообщение было отредактировано: 23 янв 21, 19:20
23 янв 21, 19:25    [22268210]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
mayton
Member

Откуда: loopback
Сообщений: 51018
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 янв 21, 19:36    [22268217]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
petrav
Member

Откуда:
Сообщений: 2861
tip78
petrav
Но, блин, работает ли это в логике игр? Представим себе у нас на экране сотня игроков, которые мочат друг друга. Какая такая задача может стоять, что бы как можно быстрее пробежаться по массиву из ста элементов и посчитать одну характеристику каждого игрока?

не теми категориями мыслишь... за 1 секунду 60 раз надо картинку просчитать
за 1 секунду она будет фактически статичная
а технически она и 2-3-5-10 секунд будет иметь повторяющиеся элементы

Ты бы пример алгоритмов привёл. А так я даже не понял про какую категорию ты говоришь.

PS: Когда я серьёзно играл в WoW пинг 30 миллисекунд считался критическим. Как-то к нам в гильдию чувак написал резюме. Его спросили: под вами загорелась лужа, за какое время вы из неё выберитесь учитывая ваш класс? Он ответил за 0.3 секунды. Ему сказали: вы что с ума сошли, нужно отвечать мгновенно, в приёме отказано. А у вас целую секунду картинка статическая.
23 янв 21, 19:38    [22268220]     Ответить | Цитировать Сообщить модератору
 Re: Изучение C++ после java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7650
petrav
Ты бы пример алгоритмов привёл.

Что там приводить?
Это было даже до шейдеров.
Вся отрисовка в OpenGL происходит так:
1. фаза - создание меша или массива точек фигур в видеокарту
glVertexPointer(3, GL_FLOAT, 0, Mesh.GLMeshLines);

2. фаза - команды отрисовки всего что отправили через
glDrawArrays: procedure(mode: GLenum; first: GLint; count: GLsizei); stdcall;

Какой тут нафиг ООП?
23 янв 21, 20:23    [22268232]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7 8 9   вперед  Ctrl      все
Все форумы / C++ Ответить