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;-1 != f;f = strfind(text," ",true, ++f))count++;
Re: Оптимизация кода -
Romanius - 12.07.2010
надо бы сравнить скорость выполнения
PHP Code:
while(f != -1)
{
f = strfind(cmdtext[i], " ", _, f + 1);
count++;
}
Re: Оптимизация кода -
MX_Master - 13.07.2010
Что именно делает этот код? кол-во пробелов подсчитывает? зачем это нужно ваще? (:
Re: Оптимизация кода -
Stepashka - 13.07.2010
Quote:
Originally Posted by Romanius
надо бы сравнить скорость выполнения
PHP Code:
while(f != -1)
{
f = strfind(cmdtext[i], " ", _, f + 1);
count++;
}
|
в приведенном коде баг, если
strfind вернет -1 счетчик все равно прибавит +1 и только потом отключится.
Quote:
Originally Posted by MX_Master
Что именно делает этот код? кол-во пробелов подсчитывает? зачем это нужно ваще? (:
|
да, а фиг его знает, может автор хочет вести статистику символов вчате, сколько раз каждую букву ввели и кто.
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
ваш код всё равно медленнее чем
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
ваш код всё равно медленнее чем
for(new j=0, count=0; text[j] != 0; j++) if(text[j] == ' ') count++;
|
давай смотреть логически:
- берем строку из 200 символов в котрой 3 пробела
- твой код обрабатывается 200 раз для каждого символа
- наш 4 раза, 3 раза для пробелов и 1 раз до уонца строки.
Дак что ты там говорил про медленнее?
ЗЫ кстати не
text[j] != 0, а
j < sizeof(text), сервак крешется когда происходит обращение к несуществующей ячейки массива, а в массиве из 200 ячеек 200ой нет.
Re: Оптимизация кода -
Alex009 - 13.07.2010
Quote:
Originally Posted by Stepashka
сервак крешется когда происходит обращение к несуществующей ячейки массива.
|
не крешится, просто прекращает выполнение текущего калбека (к примеру если обращение было при выполнении OnGameModeInit то он просто обрывается на этом а сервер работает дальше)
Re: Оптимизация кода -
Stepashka - 13.07.2010
Alex009, у меня падал, правда там массив был двухмерный.
Re: Оптимизация кода -
Maccer - 13.07.2010
Quote:
Originally Posted by Stepashka
давай смотреть логически: - берем строку из 200 символов в котрой 3 пробела
- твой код обрабатывается 200 раз для каждого символа
- наш 4 раза, 3 раза для пробелов и 1 раз до уонца строки.
Дак что ты там говорил про медленнее?
|
ну так strfind перебирает каждый раз строку в поисках пробелов
если тема волнует - пишите тесты (GetTickCount в помощь)
Quote:
Originally Posted by Stepashka
ЗЫ кстати не text[j] != 0, а j < sizeof(text), сервак крешется когда происходит обращение к несуществующей ячейки массива, а в массиве из 200 ячеек 200ой нет.
|
надо text[j] && j<sizeof text
чтоб не перебирать лишние ячейки и не выйти за пределы массива если нет нуль-символа (хотя он должен там быть)