Выделенная память

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
101
Реакции
-11
Помог
2 раз(а)
Доброе утро!! Хотелось бы уточнить, существует ли способ, что бы узнать сколько памяти выделяется на определенный код
 
Сообщения
49
Реакции
32
Если воспользоваться поиском в интернете, то можно придти к выводу о том, что специального инструмента для подобных целей не существует. Единственное, что удается найти - данную ветку, но это все под AMX для SAMP https://github.com/Zeex/amx_assembly

При должном желании, это можно переделать под amxx для hlds и считать количество памяти, израсходованной плагином.

Лично мне удалось немного поиграться с этим делом. Продолжать колдовать не вижу смысла, ибо считаю, что экономить биты и байты, когда у тебя выделено от 2ГБ для сервера - абсолютно бесполезное дело. Но ты можешь заняться этим вопросом и написать утилиту для этих нужд.
Код:
#include <amxmodx>

#include "amx_assembly\amx_memory"

public plugin_init(){
    main();
}

main() {
    new testArray[3];
    new firstArrAdr = ref(testArray[0]);
  
    testArray[0] = 100;
    server_print("========================================================");
    server_print("Address of 0: %x", ref(testArray[0]));
    server_print("Address of 1: %x", ref(testArray[1]));
    server_print("Address of 2: %x", ref(testArray[2]));
  
    server_print("Value of 0 from memory: %d", ReadAmxMemory(firstArrAdr));
  
    WriteAmxMemory(firstArrAdr, 200);
    server_print("testArray[0]: %d", testArray[0]);
    server_print("========================================================");
}
Кстати, на скриншоте очень наглядно видно, что любая переменная в pawn занимает 4 байта памяти. И не важно, как хранить логику плагина - нулями или единицами в обычной переменной или создавать для этого тип bool. Но это так, к слову об оптимизаторах и оптимизации всего и вся и различных диагнозах с этим связанным

1665399515379.png
 
Последнее редактирование:
Сообщения
494
Реакции
341
Помог
11 раз(а)
переменная в pawn занимает 4 байта памяти. И не важно, как хранить логику плагина - нулями или единицами в обычной переменной или создавать для этого тип bool.
Открою секрет: bool это префикс к integer переменой в павне. А павн уследовал от си размеры переменных. В павне это просто приставка. И по факту bool: true это единица, а все, что не единица это false.
11 Окт 2022
Нет отдельных оптимизаций в павне.
Не надо думать, что тут что-то оптимизировали и сделали лучше.
11 Окт 2022
Ну и напоследок: экономить память такими "нищими" выделениями в amxxx нет смысла.
 
Сообщения
101
Реакции
-11
Помог
2 раз(а)
Всем спасибо, тема закрыта
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу