У меня следующая ситуация:
void function(params)
{
#ifdef _MULTIPLAYER
if (isConnected)
{
if (isClient)
{
requestFunctionRemotely(params)
return;
}
else if (isServer)
{
call realFunction(params) remotely on client;
}
}
#endif
realFunction(params);
}
realFunction(params)
{
...
}
В этой ситуации я могу построить свой проект с использованием одного игрока или мультиплеера.
Этот подход был использован, потому что function(params)
вызывается по всему моему коду, поэтому я просто подключаюсь к минимально возможному уровню без проблем.
Мне пришлось разделить function
и realFunction
, потому что удаленные ответы, полученные клиентами, должны выполняться через realFunction
, чтобы избежать циклов (я мог бы изменить прототип функции, добавив флаг, но я бы разбил много кода ).
Моя проблема связана с производительностью при отключении определения _MULTIPLAYER
. У меня много function(params)
, и я буду звонить им тысячу раз. Мне придется использовать этот подход для всех из них. G ++ оптимизирует двойной вызов, когда найдет
function(params) {
realFunction(params);
}
до
function(params) {
// body of realFunction
}
а есть способ заставить его в любой подобной ситуации?
Как подсказка: в настоящее время я использую флаг -O2