Property функции
#5

Кто-нибудь проверял скорость создания/правки property? И есть ли лимиты по длине строковых значений / массивов ?

Подумываю перевести новый INI inc на динамические переменные.

Создал вот такой ФС для проверки скоростей копирования строк и правки/создания property. До 1000 слотов строковых property создаются/меняются за приемлемое время, в районе 3-4 мсек (на моем компе). После 1000 слотов время правки/создания увеличивается в прогрессии. Т.е. при 10 тыщ слотах правка/чтение/создание выполняется за примерно одинаковые 3500 мсек (3,5 сек) ^^

Code:
#include <a_samp>

#define MAX_COUNT    1000
#define TEST_STR    "012345678901234567890123456789"
#define NEW_TEST_STR  "0000000000000000000000000000000"

stock strcopy ( dest[], source[], maxsize = sizeof(dest) )
{
  new p;

  for ( ; source[p] != 0 && p < maxsize; p++ ) dest[p] = source[p];

  dest[ min( p, maxsize - 1 ) ] = 0;
}

public OnFilterScriptInit()
{
  new str[32], time, i;



  print("\n");
  print( "string functions test (" #MAX_COUNT " iterations)" );

  print( " 1. copy" );

  time = GetTickCount();
  for ( i = 0, str[0] = 0; i < MAX_COUNT; i++ ) strmid( str, TEST_STR, 0, 30 );
  time = GetTickCount() - time;
  printf( " * strmid: %d msec, str(%d) = `%s`", time, strlen(str), str );

  time = GetTickCount();
  for ( i = 0, str[0] = 0; i < MAX_COUNT; i++ ) { memcpy( str, TEST_STR, 0, 120 ); str[30] = 0; }
  time = GetTickCount() - time;
  printf( " * memcpy: %d msec, str(%d) = `%s`", time, strlen(str), str );

  time = GetTickCount();
  for ( i = 0, str[0] = 0; i < MAX_COUNT; i++ ) strcopy( str, TEST_STR );
  time = GetTickCount() - time;
  printf( " * strcopy: %d msec, str(%d) = `%s`", time, strlen(str), str );



  print("\n");
  print( "property test (" #MAX_COUNT " slots)" );

  print( " 1. create" );
  time = GetTickCount();
  for ( i = 0; i < MAX_COUNT; i++ ) setproperty( 0, _, i, TEST_STR );
  time = GetTickCount() - time;
  printf( " * setproperty: %d msec", time );

  print( " 2. get 1" );
  time = GetTickCount();
  for ( i = 0, str[0] = 0; i < MAX_COUNT; i++ ) { getproperty( 0, _, i, str ); strunpack(str,str); }
  time = GetTickCount() - time;
  printf( " * getproperty: %d msec, str(%d) = `%s`", time, strlen(str), str );

  print( " 3. edit" );
  time = GetTickCount();
  for ( i = 0; i < MAX_COUNT; i++ ) setproperty( 0, _, i, NEW_TEST_STR );
  time = GetTickCount() - time;
  printf( " * setproperty: %d msec", time );

  print( " 4. get 2" );
  time = GetTickCount();
  for ( i = 0, str[0] = 0; i < MAX_COUNT; i++ ) { getproperty( 0, _, i, str ); strunpack(str,str); }
  time = GetTickCount() - time;
  printf( " * getproperty: %d msec, str(%d) = `%s`", time, strlen(str), str );

  print( " 5. delete" );
  time = GetTickCount();
  for ( i = 0; i < MAX_COUNT; i++ ) deleteproperty( 0, _, i );
  time = GetTickCount() - time;
  printf( " * deleteproperty: %d msec", time );
}
- Копирование строк стандартными функциями strmid/memcpy выполняется примерно за 1 мсек при 1000 итераций,
и за 4 мсек при 10 тыщ итерациях.

- Самописная Pawn функция по копированию строк при 1000 итерациях выполняется за 23 мсек,
а при 1000 итерациях за 111 мсек.
Reply


Messages In This Thread
Property функции - by MX_Master - 29.03.2010, 15:07
Re: [INC] Глобальные переменные (GVar) - by [Kira] - 29.03.2010, 15:20
Re: [INC] Глобальные переменные (GVar) - by MX_Master - 29.03.2010, 16:26
Re: [INC] Глобальные переменные (GVar) - by [Kira] - 29.03.2010, 16:44
Re: Property функции - by MX_Master - 01.04.2010, 02:36
Re: Property функции - by Zeex - 01.04.2010, 07:11
Re: Property функции - by MX_Master - 01.04.2010, 13:26

Forum Jump:


Users browsing this thread: 1 Guest(s)