Fini Cache File System (72x mais rápido que Dini!)

Introdução:
Este sistema trabalha com Cache estilo Y_ini ou SSI e outros sistemas parecidos.
Possuí sistema de Leitura e Escrita atualmente mais rápido!

Velocidade:
Fini
Escritas por segundo: 087269
Leituras por segundo: 499040
Funções por segundo: +300.000

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

Praticidade:
Para usar é igual ao sistema SII, porém claro é um pouco mais rápido!
Use da seguinte forma:

Abrimos o arquivo:



Escrevemos e fazemos a leitura:




Fechamos o arquivo:



Desta forma ficando o código:






Outras informações:
Base, caso queiram escrever os númeors deve formatar como string da seguinte forma
new str[3];
format(str,4,"%d",NUMERO_AQUI);
Fini_SetStr("Teste",str);


Assim escrevemos o número no arquivo:


Códigos:
Fini:
#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:

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 com funções:

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;
}


Versão atualizada:

Download HomeHots


Feito por: [iPs]DraKiNs
Suporte em Geral: Dark Team PT
Sub-Desenvolvedor/Teste: JhonyTest