Я то думал, откуда берутся эти значения непонятные на выходе потом.
- - - Добавлено - - -
Можно же увеличить со знаком минус, один хер)
Вид для печати
А вот допустим есть в моде переменные или были, что удалял что остались размер стэка не пошевелился,
что есть ещё какие то переменные которые не оптимизируются в стэке или как то так.
- - - Добавлено - - -
Есть же инфа после компиляции при переполненом стэке, вот там как были цифры так и остались на своём месте,
разве что total и data/code size содрогнулись:read:
Я как-то задавал вопрос об этом. Если память не изменяет,то выводится информация о затраченной памяти не всего мода,а определенного блока,в котором размер затраченного места в стеке самый большой.
Именно. Размер стэка подсчитывается так же, как рассчитывают размер массива для хранения строки (ну если это делать правильно). То есть, вот тут:
для массива "string" ты должен выделить всего 36 ячеек (35 + 1 на нуль-символ), а не 67. Ведь сообщения форматируются отдельно друг от друга и для хранения всех сообщений достаточно выделить столько ячеек, сколько символов в самой большой строке.PHP код:
new string[...];
format(string, sizeof(string), "Привет");//6 символов
SendClientMessageToAll(playerid, -1, string);
format(string, sizeof(string), "Ты зашёл ко мне на сервер");//25 символов
SendClientMessageToAll(playerid, -1, string);
format(string, sizeof(string), "Длина этого сообщения - 35 символов");//35 символов
SendClientMessageToAll(playerid, -1, string);
Так же и со стеком. Компилятор ищет коллбэк, который сжирает больше всего стэка, и показывает именно значения для него, а не суммирует затраты каждого коллбэка, ибо, после выполнения одного коллбэка, память в стэке освобождается и заполнение информации о новом коллбэке происходит в совершенно чистый стэк (то бишь, так же, как и в примере с строками).
Кстате как можно подсчитать какой калбек жрёт так много, ибо старые дедовские способы вручную искать долго уйдут
Можно попробовать по такому принципу
PHP код:
public OnGameModeInit()
{
new heap = heapspace();
printf("OnGameModeInit() STK %d", heap);
// тут остальной код
printf("OnGameModeInit() STK %d (%d LOSS)", heapspace(), (heap - heapspace()));
return 1;
}
Крик души:Почему бы не увеличить стек и не париться?
Дак это же влияет на озу клиента?
Если да вот я и ищю как можно более оптимизации даже для слабых пк,
так же интересно когда всем игрокам существует доступ к серверу ...:hi: