Попробуй заменить условные переходы на математические выражения вот так.
замени
iMaxGoldPerTurn += std::min(0, getGoldPerTurnByPlayer(ePlayer));
на
int iGoldPerTurnByPlayer = getGoldPerTurnByPlayer(ePlayer);
iMaxGoldPerTurn += iGoldPerTurnByPlayer * (iGoldPerTurnByPlayer < 0);//iMaxGoldPerTurn += std::min(0, getGoldPerTurnByPlayer(ePlayer));
замени
return std::max(0, std::min(iMaxGoldPerTurn, GoldRate));
на
int iDelta = iMaxGoldPerTurn - GoldRate;
int iReturn = iMaxGoldPerTurn - iDelta * (iDelta > 0);//iReturn = std::min(iMaxGoldPerTurn, GoldRate)
iReturn *= (iReturn > 0);//iReturn = std::max(0, iReturn);
return iReturn;
Мне самому интересно насколько такая замена эффективней.
А эти програмки анализируют время затраченое на каждую функцию ?
У себя в моде я оптимизировал CvCity::getTeam(). Она по твоим скриншотам 4,73% жрет
}Код:TeamTypes CvCity::getTeam() const { //VET Optimization - begin / //return GET_PLAYER(getOwnerINLINE()).getTeam(); return m_eTeam; //VET Optimization - end /
Может ее еще и инлайновой сделать ?




Ответить с цитированием