Size: a a a

2020 September 02

W

Wild_Wind in C++ Together 2.0
Roy Mustang
С каких пор вообще модули влияют на производительность? Я слышал что нет разницы между вызовами методов из .dll и вызовами обычных функций
Лишняя индерекция на ходьбу по поинтеру к модулю и невозможность lto.
источник

RM

Roy Mustang in C++ Together 2.0
Wild_Wind
Лишняя индерекция на ходьбу по поинтеру к модулю и невозможность lto.
Не понял, указатель на функцию .dll берется до цикла
источник

RM

Roy Mustang in C++ Together 2.0
Цикл вообще работает через виртуальные методы
источник

W

Wild_Wind in C++ Together 2.0
Roy Mustang
Основной тред лишь вызывает виртуальные методы у классов, а дальше уже классы самих модулей ввозят асинхронность и многопоток
И ты делаешь .update в основном треде, по всем модулям, последовательно? Серьёзно?
источник

RM

Roy Mustang in C++ Together 2.0
Wild_Wind
И ты делаешь .update в основном треде, по всем модулям, последовательно? Серьёзно?
По всем классам из модулей
источник

RM

Roy Mustang in C++ Together 2.0
Да, серьезно, а как ты собрался туда многопоток из приложения завезти? Это нереально
источник

RM

Roy Mustang in C++ Together 2.0
В онлайн играх последовательность алгоритмов играет важную роль, вводя многопоток ты эту последовательность не получишь
источник

W

Wild_Wind in C++ Together 2.0
Roy Mustang
Не понял, указатель на функцию .dll берется до цикла
И каждый раз ты ходишь на другой участок памяти, про который в момент компиляции неизвестно ничего...
источник

RM

Roy Mustang in C++ Together 2.0
Wild_Wind
И каждый раз ты ходишь на другой участок памяти, про который в момент компиляции неизвестно ничего...
Верно, только указатель на виртуальный класс и по нему вызовы виртуальных методов
источник

W

Wild_Wind in C++ Together 2.0
Roy Mustang
Да, серьезно, а как ты собрался туда многопоток из приложения завезти? Это нереально
Возьму футуры и буду делать это асинхронно. Ибо ситуация когда модуль 1 ждет модуль 2, и друг от друга прямо не зависит - говно.
источник

G

GNU/Плюшка in C++ Together 2.0
Wild_Wind
И каждый раз ты ходишь на другой участок памяти, про который в момент компиляции неизвестно ничего...
Это ж как должно при этом совпасть, чтобы cache hit'ы получать... надо однозначно свой загрузчик дллок и кастомный аллокатор писать
источник

W

Wild_Wind in C++ Together 2.0
GNU/Плюшка
Это ж как должно при этом совпасть, чтобы cache hit'ы получать... надо однозначно свой загрузчик дллок и кастомный аллокатор писать
Если чтоб по нормальному - то да.
источник

G

GNU/Плюшка in C++ Together 2.0
Чтобы последовательно лежало и все приложение целиком помещалось в кэш
источник

RM

Roy Mustang in C++ Together 2.0
Wild_Wind
Возьму футуры и буду делать это асинхронно. Ибо ситуация когда модуль 1 ждет модуль 2, и друг от друга прямо не зависит - говно.
То что ты предлагаешь сложно реализовать и смысла в этом нет
источник

RM

Roy Mustang in C++ Together 2.0
Асинхронность и многопоточность можно завозить внутри самих модулей
источник

W

Wild_Wind in C++ Together 2.0
GNU/Плюшка
Чтобы последовательно лежало и все приложение целиком помещалось в кэш
Ага, благо с pmr запилить это будет попроще.
источник

G

GNU/Плюшка in C++ Together 2.0
Ну или просто требования к железу чуть поднять
источник

RM

Roy Mustang in C++ Together 2.0
GNU/Плюшка
Ну или просто требования к железу чуть поднять
и так придется поднимать
источник

W

Wild_Wind in C++ Together 2.0
Roy Mustang
То что ты предлагаешь сложно реализовать и смысла в этом нет
У тебя в модуле 1 тяжелая операция, ты ждешь когда отработает update, у модуля 2 update не вызван, ибо ты ждешь первого...
источник

RM

Roy Mustang in C++ Together 2.0
Wild_Wind
У тебя в модуле 1 тяжелая операция, ты ждешь когда отработает update, у модуля 2 update не вызван, ибо ты ждешь первого...
В таком случае разработчик должен позаботиться об этом модуле сам и ввести асинхронность
источник