Fini Melhor que Dini[INC]

Introdução:

Olá galerinha bonita hoje venho publicar meu sistema de salvamento (Fini)
Ele trabalha com Cache estilo Y_Ini ou SII e outros sistemas parecidos

Devido meu grande esforço e com ajuda de Dark Team PT fiz o sistema de Leitura e Escrita atualmente mais rápido.

Velocidade:

Fini
Escritas por Segundo: 087269
Leituras por Segundo: 499040
Funções por Segundo: 057052

Dini
Escritas por Segundo: 221
Leituras por Segundo: 6355
Funções por Segundo: 72

Praticidade:

Para usar é igual o sistema SII,porém claro é um pouco mais rápido.

Use da seguinte Forma:

Abrimos o Arquivo:

pawn Code:
Fini_OpenFile("Arquivo.txt");

Escrevemos e fazemos a Leitura

pawn Code:
Fini_SetStr("Teste","Teste");
Fini_SaveFile(); // sempre salve arquivos depois de terminar antes de ler algo,ou depois de terminar de setar TUDO
Fini_GetStr("Teste");

Fechamos o Arquivo:

pawn Code:
Fini_CloseFile();

Desta forma ficando o Código:
pawn Code:
Fini_OpenFile("Arquivo.txt");

Fini_SetStr("Teste","Teste");

Fini_SaveFile();

Fini_GetStr("Teste");


Fini_CloseFile();

Outras Informações:

Devido a eu estrar com um pouco de pressa pois sairei daqui a pouco eu fiz apenas a base,caso querem escrever números deve formatar como String da seguinte forma:

pawn Code:
new str[3];
format(str,4,"%d",NUMERO_AQUI);
Fini_SetStr("Teste",str);

Assim escreveremos o número no arquivo

Code:
Teste=10

Códigos:

Fini:

pawn Code:
#define maxtag (00244)
#define maxfile (99999)
#define maxname (00064)

#define Fini_Exists fexist
#define Fini_GetFloat(%0) floatstr(Fini_GetStr(%0))

static
zNormal1,
zNormal2,
fStr[maxtag],
fTag[maxtag],
fFile[maxfile],
File:zFopenFile,
fName[maxname],
iSource
;

stock
Fini_OpenFile(fname[])
{
zFopenFile = fopen(fname,io_read);

while(fread(zFopenFile,fStr))
strins(fFile,fStr,strlen(fFile),maxfile);

fclose(zFopenFile);
format(fName,maxname,"%s",fname);
return true;
}

stock
Fini_SaveFile()
{
fremove(fName);
zFopenFile = fopen(fName,io_write);

fwrite(zFopenFile,fFile);
fclose(zFopenFile);
return true;
}

stock
Fini_CloseFile()
{
fFile[0] = '\0';
fName[0] = '\0';
return true;
}

stock
Fini_GetStr(ftag[])
{
zNormal1 = strfind(fFile,ftag,true);
zNormal2 = (zNormal1 + (strlen(ftag)));
strmid(fTag,fFile,zNormal2,(zNormal2 + maxtag),maxtag);
zNormal2 = strfind(fTag,"\n",true);
strmid(fStr,fTag,1,zNormal2 ,maxtag);
return fStr;
}


stock
Fini_SetStr(ftag[],fstr[])
{
format(fTag,maxtag,"%s=%s",ftag,Fini_GetStr(ftag));
zNormal1 = strfind(fFile,ftag,true);
if(zNormal1 != -1)
{
iSource = strlen( fTag ) ;
format(fStr,maxtag,"%s=%s",ftag,fstr);
strdel(fFile,zNormal1 ,(zNormal1 + iSource));
format(fStr,128,"%s",fStr);
strins(fFile,fStr,zNormal1 ,128);
}

else
{
format(fStr,maxtag,"%s=%s\r\n",ftag,fstr);
strins(fFile,fStr,strlen(fFile));
}
return true;
}

stock
Fini_Create(nFile[])
{
if (Fini_Exists(nFile)) return false;
new File:cFile = fopen(nFile,io_write);
return fclose(cFile);
}

stock
Fini_SetVal(ftag[],fval)
{
static Seting[24];
format(Seting,maxtag,"%d",fval);
Fini_SetStr(ftag,Seting);
return true;
}

stock
Fini_SetFloat(ftag[],Float:fval)
{
static Seting[24];
format(Seting,maxtag,"%f",fval);
Fini_SetStr(ftag,Seting);
return true;
}

stock
Fini_SetBool(ftag[],bool:fval)
{
static Seting[24];
format(Seting,maxtag,"%d",fval);
Fini_SetStr(ftag,Seting);
return true;
}

stock
Fini_IsSet(ftag[])
{
format(fTag,maxtag,"%s=%s",ftag,Fini_GetStr(ftag));
zNormal1 = strfind(fFile,ftag,true);
if(zNormal1 != -1)
return true;
return false;
}

stock Fini_GetBool(ftag[])
{
new Seting = strval(Fini_GetStr(ftag));
return Seting;
}

stock Fini_GetValue(ftag[])
{
new Seting = strval(Fini_GetStr(ftag));
return Seting;
}


Testes com Dini:

pawn Code:
public OnFilterScriptInit()
{
dini_Create("Dini.txt");
dini_Create("Fini.txt");

new Fini = GetTickCount(),FiniValue;

Fini_OpenFile("Fini.txt");
while(GetTickCount() - Fini < 1000)
{
Fini_SetStr("Key1","Ok1");
Fini_GetStr("Key1");
FiniValue++;
}
Fini_SaveFile();
Fini_CloseFile();

printf("Fini: %d",FiniValue);

new Dini = GetTickCount(),DiniValue;

while(GetTickCount() - Dini < 1000)
{
dini_Set("Dini.txt","Key1","Ok1");
dini_Get("Dini.txt","Key1");
DiniValue++;
}
printf("Dini: %d",DiniValue);

return true;
}

Testes de Funções:

pawn Code:
public OnFilterScriptInit()
{
Fini_Create("Fini.txt");

#define SEGUNDOS 1 //coloque aqui o número de segundos para teste de funcoes

new
Fini = GetTickCount(),
FiniValue
;

if(!Fini_Exists("Fini.txt"))
Fini_Create("Fini.txt");

Fini_OpenFile("Fini.txt");

while(GetTickCount() - Fini < (SEGUNDOS * 1000))
{

Fini_SetStr ("DraKoN" , "Kitties" );
Fini_SetBool ("Boolean" , false );
Fini_SetFloat ("Floating" , 1.8 );
Fini_SetVal ("SAMP" , 199 );
FiniValue++;
}
printf("String-%s", Fini_GetStr ("DraKoN"));
printf("Boool - %d", Fini_GetBool ("Boolean"));
printf("Value - %i", Fini_GetValue("SAMP"));
printf("Float - %f", Fini_GetFloat("Floating"));

Fini_SaveFile();
Fini_CloseFile();

printf("Fini: %d Functions in %d Seconds",((FiniValue * 5) + 5) + 4,SEGUNDOS);
return true;
Créditos:

[FeK] Ini File System é criado por:
Code:
DraKiNs - Desenvolvedor Geral Dark Team PT - Suporte em Geral JhonyTest - Sub-Desenvolvedor ~ Tester
Postador: Juninho_Boy

0 comentários:

Postar um comentário