Peršokti į turinį

[INC] stringfunctions


Edga;*

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3686 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

String functions

 

Palengvina darbą skriptinant naudojant 'string' kintamuosius. Papildomos funkcijos padeda įvairiose skripto situacijose. Panaudoti galima kuriant apsaugas nuo %(s,f,d) ir t.t.

 

Funkcijos

GetSymbolRowNumber( const e_symbol[], const e_string[] ) - išgauna simbolio eilės numerį stringe
IsSymbolInString( const e_symbol[], const e_string[] ) - patikrina ar simbolis yra stringe
IsStringEmpty( const e_string[] ) - patikrina ar stringas tuščias
IsStringSize( const e_string[], const e_size ) - patikrina ar stringas yra tam tikro dydžio
IsStringInArray(const e_string[], const e_array[][], const e_array_size = sizeof e_array)- patikrina ar stringas yra arrayjuje.

Parsisiuntimas

 

V1.0:

http://pastebin.com/v7DxfqLQ

http://www.solidfiles.com/d/4218409a37/stringf.inc

Redaguota , nario ᴇᴅɢᴀʀ.
Nuoroda į komentarą
Dalintis per kitą puslapį

 

GetSymbolRowNumber = strfind

IsSymbolInString = strfind

 

IsStringEmpty - yra define kuris padarys tą patį, tik nenaudodamas resursų:

 #define isnull(%1) \
                ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))

Davai įrodyk kad isnull ir native funkcijos veikia greičiau negu ciklas, tarkim žodis Bebras, simbolis - e

Nuoroda į komentarą
Dalintis per kitą puslapį

Davai įrodyk kad isnull ir native funkcijos veikia greičiau negu ciklas, tarkim žodis Bebras, simbolis - e

Su malonumu! 

 

Testo kodas:

#include <a_samp>

#define isnull(%1) \
                ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))



main() 
{
	
}


#define ITERATIONS 100000


public OnGameModeInit()
{
	new ticks;

	// GetSymbolRowNumber vs strfind

	ticks = GetTickCount();
	for(new i = 0; i < ITERATIONS; i++)
	{
		GetSymbolRowNumber("Bebras","e");
	}
	printf("GetSymbolRowNumber uztruko %d MS",GetTickCount() - ticks);
	ticks = GetTickCount();
	for(new i = 0; i < ITERATIONS; i++)
	{
		strfind("Bebras","e");
	}
	printf("Strfind uztruko %d MS",GetTickCount() - ticks);
	
	
	// IsSymbolsInString vs strfind
	ticks = GetTickCount();
	for(new i = 0; i < ITERATIONS; i++)
	{
	    if(IsSymbolInString("Bebras","e")) {}
	}
	printf("IsSymbolInString uztruko %d MS",GetTickCount() - ticks);
	ticks = GetTickCount();
	for(new i = 0; i < ITERATIONS; i++)
	{
		if(strfind("Bebras","e") != -1) {}
	}
	printf("Strfind uztruko %d MS",GetTickCount() - ticks);
	
	//IsStringEmpty vs isnull
	new string[7] = "Bebras";
	ticks = GetTickCount();
	for(new i = 0; i < ITERATIONS; i++)
	{
		if(IsStringEmpty(string)) {}
	}
	printf("IsStringEmpty uztruko %d MS",GetTickCount() - ticks);
	ticks = GetTickCount();
	for(new i = 0; i < ITERATIONS; i++)
	{
		if(isnull(string)) {}
	}
	printf("Isnull define uztruko %d MS",GetTickCount() - ticks);
	return 1;
}


stock GetSymbolRowNumber( const e_symbol[], const e_string[] )
{
        for( new stringLoop; stringLoop < strlen(e_string); stringLoop++ )
        {
                if( !strcmp(e_string[stringLoop], e_symbol, true) )
                {
                        return stringLoop;
                }
        }
        return -1;
}

stock IsSymbolInString( const e_symbol[], const e_string[] )
{
        for( new stringLoop; stringLoop < strlen(e_string); stringLoop++ )
        {
                if( !strcmp(e_string[stringLoop], e_symbol, true) )
                {
                        return(true);
                }
        }
        return(false);
}

stock IsStringEmpty( const e_string[] )
{
        if( strlen(e_string) == 0 )
        {
                return(true);
        }
        else
                return(false);
} 

 

Testo rezultatas:

 

[23:05:13] GetSymbolRowNumber uztruko 50 MS

[23:05:13] Strfind uztruko 12 MS
[23:05:13] IsSymbolInString uztruko 47 MS
[23:05:13] Strfind uztruko 12 MS
[23:05:13] IsStringEmpty uztruko 11 MS
[23:05:13] Isnull define uztruko 6 MS

 

Ir iš to galima spręsti jog buvau teisus :) 

Nuoroda į komentarą
Dalintis per kitą puslapį

Aišku galėčiau, bet rezultatai būtų per maži ką nors spręsti.

 

Bet štai jie:

 

[23:23:56] GetSymbolRowNumber uztruko 0 MS

[23:23:56] Strfind uztruko 0 MS
[23:23:56] IsSymbolInString uztruko 1 MS
[23:23:56] Strfind uztruko 0 MS
[23:23:56] IsStringEmpty uztruko 0 MS
[23:23:56] Isnull define uztruko 0 MS
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3686 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...