SA-MP Forums Archive
Оптимизация кода - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Оптимизация кода (/showthread.php?tid=153915)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13


Re: Оптимизация кода - MX_Master - 16.06.2010

У меня в админке старой навалом таких массивов с флагами, везде значения 1 и 0 в них юзаются. Я сделал все с char. Все также как часы и памяти кушает в 4 раза меньше.

Представляю сколько таких массивов с флагами в РП модах ((:


Re: Оптимизация кода - Stepashka - 16.06.2010

Quote:
Originally Posted by MX_Master
У меня в админке старой навалом таких массивов с флагами, везде значения 1 и 0 в них юзаются. Я сделал все с char. Все также как часы и памяти кушает в 4 раза меньше.

Представляю сколько таких массивов с флагами в РП модах ((:
а если я туда буду записывать не только 1 и 0, а скажем 0,1,2,...,9 или true/false работать будет?


Re: Оптимизация кода - Romanius - 16.06.2010

слух а им какие значения мона задавать токо 1 и 0? или моно еще 12345 6435

и зачем тут знак !

Code:
stock packedStr [ 128 char ] = !"Cтрока, в которой символ занимает не 4 байта, а всего 1";



Re: Оптимизация кода - MX_Master - 16.06.2010

Упакованные строки вам не пригодяться в явном виде, т.к. с ними стандартные функции не работают.

Значения от 0 до 255

true это 1 или больше, а false это 0, так гласит язык


Re: Оптимизация кода - Romanius - 16.06.2010

слух не подскажеш как с этой всей багадельнёй сделать enum структуры


Re: Оптимизация кода - Stepashka - 16.06.2010

Quote:
Originally Posted by MX_Master
true это 1 или больше, а false это 0, так гласит язык
я про bool, а отрицательные значения можно?


Re: Оптимизация кода - JesterX - 16.06.2010

stepmex,
Code:
stock bool:arr[ 500 char ];
arr{1} = true;
Вроде по законам логики должно прокатить

Romanius,
enum - не структуры, а сложный тип данных. А что тебя смущает?
Смысла в нём я вообще не вижу


Re: Оптимизация кода - MX_Master - 16.06.2010

имелось ввиду такое?

Code:
enum myType
{
  someArray [ 128 char ],
  someVar,
  Float: someFLoatVar
}

new mySpecialArray [ 500 ] [ myType ];
// вместо 500 поставить 500 char можно, но это не тот эффект совсем
// 500 тут кол-во элементов, а не ячеек
кто знает, значение типа bool: в pawn сколько бит/байт занимает?


Re: Оптимизация кода - RAEN - 17.06.2010

Quote:
Originally Posted by MX_Master
Т.е. если я правильно понял,то можно код такого типа:

pawn Code:
new Player[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
Player[playerid]=1
return 1;
}
и т.д.
Заменить на:

pawn Code:
new Player[500 char];

public OnPlayerConnect(playerid)
{
Player[playerid]=1 //Только данная переменная не может принимать значения более 255
return 1;
}
и т.д.



Re: Оптимизация кода - [JIeXa] - 17.06.2010

Quote:
Originally Posted by RAEN
Заменить на:

pawn Code:
new Player[500 char];

public OnPlayerConnect(playerid)
{
Player[playerid]=1 //Только данная переменная не может принимать значения более 255
return 1;
}
и т.д.
угу, но всё таки лучше бы ты юзал bool


Re: Оптимизация кода - Stepashka - 12.07.2010

PHP Code:
new count = -1;
for(new 
f;-!= f;strfind(text," ",true, ++f))count++; 



Re: Оптимизация кода - Romanius - 12.07.2010

надо бы сравнить скорость выполнения

PHP Code:
while(!= -1)
{
    
strfind(cmdtext[i], " "_1);
    
count++;




Re: Оптимизация кода - MX_Master - 13.07.2010

Что именно делает этот код? кол-во пробелов подсчитывает? зачем это нужно ваще? (:


Re: Оптимизация кода - Stepashka - 13.07.2010

Quote:
Originally Posted by Romanius
View Post
надо бы сравнить скорость выполнения
PHP Code:
while(!= -1)
{
    
strfind(cmdtext[i], " "_1);
    
count++;

в приведенном коде баг, если strfind вернет -1 счетчик все равно прибавит +1 и только потом отключится.

Quote:
Originally Posted by MX_Master
View Post
Что именно делает этот код? кол-во пробелов подсчитывает? зачем это нужно ваще? (:
да, а фиг его знает, может автор хочет вести статистику символов вчате, сколько раз каждую букву ввели и кто.


Re: Оптимизация кода - Aleks10 - 13.07.2010

ваш код всё равно медленнее чем

for(new j=0, count=0; text[j] != 0; j++) if(text[j] == ' ') count++;


Re: Оптимизация кода - Romanius - 13.07.2010

Quote:
Originally Posted by Aleks10
View Post
ваш код всё равно медленнее чем

for(new j=0, count=0; text[j] != 0; j++) if(text[j] == ' ') count++;
Все же нет этот помедленне я протестил

и я забыл убрать cmdtext[i] и прочее ну я скоро выпущу рейлиз а там и увидите


Re: Оптимизация кода - Stepashka - 13.07.2010

Quote:
Originally Posted by Aleks10
View Post
ваш код всё равно медленнее чем

for(new j=0, count=0; text[j] != 0; j++) if(text[j] == ' ') count++;
давай смотреть логически:Дак что ты там говорил про медленнее?

ЗЫ кстати не text[j] != 0, а j < sizeof(text), сервак крешется когда происходит обращение к несуществующей ячейки массива, а в массиве из 200 ячеек 200ой нет.


Re: Оптимизация кода - Alex009 - 13.07.2010

Quote:
Originally Posted by Stepashka
View Post
сервак крешется когда происходит обращение к несуществующей ячейки массива.
не крешится, просто прекращает выполнение текущего калбека (к примеру если обращение было при выполнении OnGameModeInit то он просто обрывается на этом а сервер работает дальше)


Re: Оптимизация кода - Stepashka - 13.07.2010

Alex009, у меня падал, правда там массив был двухмерный.


Re: Оптимизация кода - Maccer - 13.07.2010

Quote:
Originally Posted by Stepashka
View Post
давай смотреть логически:
  • берем строку из 200 символов в котрой 3 пробела
  • твой код обрабатывается 200 раз для каждого символа
  • наш 4 раза, 3 раза для пробелов и 1 раз до уонца строки.
Дак что ты там говорил про медленнее?
ну так strfind перебирает каждый раз строку в поисках пробелов
если тема волнует - пишите тесты (GetTickCount в помощь)
Quote:
Originally Posted by Stepashka
View Post
ЗЫ кстати не text[j] != 0, а j < sizeof(text), сервак крешется когда происходит обращение к несуществующей ячейки массива, а в массиве из 200 ячеек 200ой нет.
надо text[j] && j<sizeof text
чтоб не перебирать лишние ячейки и не выйти за пределы массива если нет нуль-символа (хотя он должен там быть)