При отправке серверу на выполнение RCON команды (SendRconCommand) "gmx" отключается плагин JIT, в логах появляется следующая запись:
Каково решение проблемы?PHP код:
[jit] Compilation was disabled
Вид для печати
При отправке серверу на выполнение RCON команды (SendRconCommand) "gmx" отключается плагин JIT, в логах появляется следующая запись:
Каково решение проблемы?PHP код:
[jit] Compilation was disabled
Что быстрее будет?)
PHP код:
foreach(Player,i) SendClientMessage(i, -1, string);
PHP код:
SendClientMessageToAll(-1,string);
Я не знаю особо этой архитектуры самповского функционала как он изнутри из чего составлен чем намазан,
просто что подумал, второй вариант возможно будет пробивать по max_players,
а первый я прогоню итерацией от foreach, мысли на всякий случай)
1. Вариант 1 - НЕСКОЛЬКО(!!!) вызовов функции.
2. Вариант 2 - один вызов функции.
Что конкретно делает UPDATE: в pawno, вот пример
PHP код:
else
{
UPDATE: UpdateVehiclePost(vehicleid, 0);
}
PHP код:
void CNetGame::SendClientMessageToAll(uint32_t msgColor, char* msgStr, ...)
{
char szBuffer[1024];
memset(szBuffer, 0, 1024);
va_list va;
va_start(va, msgStr);
vsprintf(szBuffer, msgStr, va);
va_end(va);
RakNet::BitStream bsParams;
uint32_t dwStrLen = strlen(szBuffer);
bsParams.Write(msgColor);
bsParams.Write(dwStrLen);
bsParams.Write(szBuffer, dwStrLen);
this->GlobalRPC(RPC_ClientMessage, &bsParams, INVALID_PLAYER_ID, PACKET_STREAM_RPC_TEXT);
}
Дальше по вложенности идёт уровень RakNet, который в этом плане хорошо оптимизирован.PHP код:
void CFunctions::GlobalRPC(int* szUniqueID, RakNet::BitStream* bsParams, int iExcludePlayerId, char PacketStream)
{
PacketReliability reliable = RELIABLE_ORDERED;
if (PacketStream == 3) {
reliable = RELIABLE;
}
if (iExcludePlayerId == INVALID_PLAYER_ID) {
pRakServer->RPC(szUniqueID, bsParams, HIGH_PRIORITY, reliable, PacketStream, UNASSIGNED_PLAYER_ID, true, false);
} else {
pRakServer->RPC(szUniqueID, bsParams, HIGH_PRIORITY, reliable, PacketStream, pRakServer->GetPlayerIDFromIndex(iExcludePlayerId), true, false);
}
}
Что касается других подобных проверок (установка анимации, изменение скина и прочее), то в SA-MP'е используется обычный PoolSize (GetPlayerPoolSize). Но это не значит, что собственная реализация на Pawn с foreach будет быстрее внутренней, там всё же C++ и нет лишней прослойки в виде AMX.
- - - Добавлено - - -
Ничего, это просто тег (хотя использование тегов таким образом лишено смысла).