Добрый вечер. Хотел бы задать несколько небольших вопросов, касающихся видов памяти в pawn, процесса компиляции и еще парочку
.
1. Есть ли правильно говорить, что сегмент данных - статическая память? Почему-то на просторах интернета вместо сегмента данных всегда говорят статическая память, но ни на одном из форумов про pawn (по крайней мере я не замечал).
2. Размер памяти, определяемой через #pragma dynamic, включает в себя и кучу, и стэк, и сегмент данных? Вообще все, что мы выделяем через #pragma dynamic, при запуске сервера запрашивает винда у процессора? (или у кого там... В общем, чтобы выделили какую-то память под программу).
3. Когда мы тыкаем на кнопку компиляции, сначала работает препроцессор - "сует" инклуды в мод, подставляет значения макросов. Делает ли он что-нибудь еще? Происходит ли что-нибудь после компиляции (может есть какой-нибудь постпроцессор?). И компилируется ли #emit?
4. Видел на форуме чудесную тему про сравнение производительности кода. Столько там мудростей необъятных... У меня прямо даже назревает вопрос: вот эти тесты скорости будут неточными?
{
new a;
// поехали 1
a = 0;
for(new i = 0; i < 1_000_000; i++)
a++;
// поехали 2
a = 0;
for(new i = 0; i < 1_000_000; i++)
a+=1;
// поехали 3
a = 0;
for(new i = 0; i < 1_000_000; i++)
a = a+1;
return 1;
}
Глупы пример, но не суть. По идее: во всех случаях используется одинаковый адрес к ячейке, во всех случаях переменная начинает изменяться с нуля. Единственное, возможно, стоило переменную-счетчик вынести в начало, чтобы у нее тоже адрес был постоянен. Но я очень сомневаюсь, что тут адрес переменной на что-то влияет.
5. Пожалуй, последнее и не очень связанное с pawn. В общем, давно заметил такую беду, что если PlayerTextDraw вынести в отдельный файл (инклуд) и подключить в OnPlayerConnect, то на самом сервере он не будет отображаться (либо очень коряво). С OnGameModeInit такого не замечал. Спрашивал у знакомого, который сказал, что тоже встречался с такой проблемой. Решение не нашел. Из-за чего такое вообще может быть? Ведь компилятору должно быть безразлично в какую функцию мы это добавляем.
Заранее большое всем спасибо