Size: a a a

pro.graphon (and gamedev)

2020 May 11

AT

Anatoly Tomilov in pro.graphon (and gamedev)
boost pp попробуй разобрать хоть один алгоритм
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
однако ж можно уникальные compile-time штуки делать: https://stackoverflow.com/a/41627474/1430927
источник

d

disba1ancer in pro.graphon (and gamedev)
tldr
источник

d

disba1ancer in pro.graphon (and gamedev)
эх в 10ом gcc завезли корутины, но не завезли модули
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
ну допустим ты хочешь сделать так, чтобы у тебя структура была минимального размера, но при этом ни у одного поля не был нарушен alignment. Ты хочешь определить структуру с именем StructureName и полями FieldName1, FieldName2, FieldName3, FieldName4, у которых типы int8_t, int32_t, int16_t и int64_t соответственно. Для этого ты хочешь заюзать какой-то хитрый макрос REARRANGE вот так:
REARRANGE(StructureName,
         (int8_t)(FieldName1),
         (int32_t)(FieldName2),
         (int16_t)(FieldName3),
         (int64_t)(FieldName4));
внутри там должно быть определение, эквивалентное вот такому:
struct StructureName
{
   int64_t FieldName4;
   int32_t FieldName2;
   int16_t FieldName3;
   int8_t FieldName1;
};
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
Anatoly Tomilov
ну допустим ты хочешь сделать так, чтобы у тебя структура была минимального размера, но при этом ни у одного поля не был нарушен alignment. Ты хочешь определить структуру с именем StructureName и полями FieldName1, FieldName2, FieldName3, FieldName4, у которых типы int8_t, int32_t, int16_t и int64_t соответственно. Для этого ты хочешь заюзать какой-то хитрый макрос REARRANGE вот так:
REARRANGE(StructureName,
         (int8_t)(FieldName1),
         (int32_t)(FieldName2),
         (int16_t)(FieldName3),
         (int64_t)(FieldName4));
внутри там должно быть определение, эквивалентное вот такому:
struct StructureName
{
   int64_t FieldName4;
   int32_t FieldName2;
   int16_t FieldName3;
   int8_t FieldName1;
};
убить бы за такое
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
за что?)
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
не, ну сейчас конечно принято писать питоновский скрипт и делать какую-то кодогенерацию красиво
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
в общем это реализуемо в compile time
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
Anatoly Tomilov
за что?)
за то, что эти люди лезут в программирование
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Надо в одну кэш-линию складывать, скорее, данные, которые рядом будут использоваться
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Хотя, зависит от того, что нужно
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
да. Это общий подход
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
можно и паддинг, наверное, вставлять
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
может даже можно std140 и std430 в compile-time разрулить
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
сочетание boost pp и constexpr — мощная штука
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
Anatoly Tomilov
сочетание boost pp и constexpr — мощная штука
если под боком есть мощная ферма
источник

PK

Pavel Kazakov in pro.graphon (and gamedev)
Anatoly Tomilov
сочетание boost pp и constexpr — мощная штука
если там хоть сколько-нибудь объемный код пытаться на pp делать, это дофига времени компиляции сожрет, при том сообщения об ошибках непроницаемы
источник

k

koren in pro.graphon (and gamedev)
Я тут пытался понять то, почему в моём проекте просаживался FPS
Ответ нашёлся не сразу
Рассказать ли вам про это?
источник

S

Stas in pro.graphon (and gamedev)
koren
Я тут пытался понять то, почему в моём проекте просаживался FPS
Ответ нашёлся не сразу
Рассказать ли вам про это?
Да.
источник