[Include] Bini (INI FILES) Versao 4
#1

Bini 4

Apуs algumas semanas de desenvolvimento da nova versгo de Bini. Finalmente consigo acaba-la.
A nova versгo de Bini nгo conta com muitas alteraзхes, exceto a engine de manipulaзгo de arquivos na memуria. Desta vez utiliza memуria cache mais avanзada usando Setproperty e Getproperty!

BINI FOI ATUALIZADO DA ЪLTIMA VEZ 1/07 as 3:39. Agora o modo de uso й igual DINI. Nгo precisa dar OPEN, NEM CLOSE. Muito menos SAVE

Por mais que nгo seja necessбrio o uso de INI_Save. Aconselha o USO DA MESMA, pois em caso de crashs ou eventuais bugs no seu servidor decorrente em outros fatores, alguns arquivos podem ser perdidos !!


Velocidade
Com esta nova engine, a velocidade foi bastante aprimorada. O que jб era rбpido ficou mais rбpido ainda



Quote:

[09:59:37]
[00:57:47] Bini -> write 3304 ms - read 32 ms - read/write 3336 ms
[00:57:47] Dof2 -> write 3557 ms - read 258 ms - read/write 3815 ms

A funзгo write apesar de ser mais rбpida que todos os outros sistemas de arquivos ainda precisa de alguns ajustes de velocidade e estabilidade, entгo eventuais atualizaзхes estгo para surgir

Cуdigo usado para teste de velocidade:
pawn Код:
main() {


    DOF2_CreateFile("ipsBruno1");
    DOF2_CreateFile("ipsBruno2");


    new dof[3];

    dof[0] = GetTickCount();
    dof[2] = GetTickCount();
    for(new i; i != 3000; i++) {
        DOF2_SetInt("ipsBruno1", "teste1", 1000);
        DOF2_SetInt("ipsBruno1", "teste2", 2000);
        DOF2_SetInt("ipsBruno1", "teste3", 3000);
        DOF2_SetInt("ipsBruno1", "teste4", 4000);
        DOF2_SetInt("ipsBruno1", "teste5", 5000);
        DOF2_SetInt("ipsBruno1", "teste6", 6000);
        DOF2_SetInt("ipsBruno1", "teste7", 7000);
        DOF2_SetInt("ipsBruno1", "teste8", 8000);
        DOF2_SetInt("ipsBruno1", "teste9", 9000);
        DOF2_SetInt("ipsBruno1", "teste10", 10000);
        DOF2_SetInt("ipsBruno1", "teste11", 11000);

        DOF2_SaveFile();
    }
    dof[0] = GetTickCount() - dof[0];

    dof[1] = GetTickCount();
    for(new i; i != 3000; i++) {
        DOF2_GetInt("ipsBruno1", "teste1");
        DOF2_GetInt("ipsBruno1", "teste2");
        DOF2_GetInt("ipsBruno1", "teste3");
        DOF2_GetInt("ipsBruno1", "teste4");
        DOF2_GetInt("ipsBruno1", "teste5");
        DOF2_GetInt("ipsBruno1", "teste6");
        DOF2_GetInt("ipsBruno1", "teste7");
        DOF2_GetInt("ipsBruno1", "teste8");
        DOF2_GetInt("ipsBruno1", "teste9");
        DOF2_GetInt("ipsBruno1", "teste10");
        DOF2_GetInt("ipsBruno1", "teste11");
    }
    dof[1] = GetTickCount() - dof[1];
    dof[2] = GetTickCount() - dof[2];


    //


    new bin[3];

    bin[0] = GetTickCount();
    bin[2] = GetTickCount();
    for(new i; i != 3000; i++) {
        INI_WriteInt("ipsBruno2", "teste1", 1000);
        INI_WriteInt("ipsBruno2", "teste2", 2000);
        INI_WriteInt("ipsBruno2", "teste3", 3000);
        INI_WriteInt("ipsBruno2", "teste4", 4000);
        INI_WriteInt("ipsBruno2", "teste5", 5000);
        INI_WriteInt("ipsBruno2", "teste6", 6000);
        INI_WriteInt("ipsBruno2", "teste7", 7000);
        INI_WriteInt("ipsBruno2", "teste8", 8000);
        INI_WriteInt("ipsBruno2", "teste9", 9000);
        INI_WriteInt("ipsBruno2", "teste10", 10000);
        INI_WriteInt("ipsBruno2", "teste11", 11000);
        INI_Save();
    }

    bin[0] = GetTickCount() - bin[0];
    bin[1] = GetTickCount();

    for(new i; i != 3000; i++) {
        INI_ReadInt("ipsBruno2", "teste1");
        INI_ReadInt("ipsBruno2", "teste2");
        INI_ReadInt("ipsBruno2", "teste3");
        INI_ReadInt("ipsBruno2", "teste4");
        INI_ReadInt("ipsBruno2", "teste5");
        INI_ReadInt("ipsBruno2", "teste6");
        INI_ReadInt("ipsBruno2", "teste7");
        INI_ReadInt("ipsBruno2", "teste8");
        INI_ReadInt("ipsBruno2", "teste9");
        INI_ReadInt("ipsBruno2", "teste10");
        INI_ReadInt("ipsBruno2", "teste11");
    }
   
   

    bin[1] = GetTickCount() - bin[1];
    bin[2] = GetTickCount() - bin[2];

    printf("Bini -> write %d ms - read %d ms - read/write %d ms", bin[0], bin[1], bin[2]);
    printf("Dof2 -> write %d ms - read %d ms - read/write %d ms", dof[0], dof[1], dof[2]);
    return true;
}


public OnFilterScriptExit() {
    DOF2_Exit();
    INI_Exit();
    return true;
}
NOVOS TESTES DE VELOCIDADES SERГO ACEITOS

Usando
Para usar Bini й bastante simples! Basta fazer o seguinte:

Escrevendo:

Nъmeros
pawn Код:
INI_WriteInt("arquivo.ini", "key", valor);
Textos:
pawn Код:
INI_WriteString("arquivo.ini", "key", "valor");
Lendo valores:

Nъmeros
pawn Код:
INI_ReadInt("arquivo.ini", "key")

Textos
pawn Код:
INI_ReadString("arquivo.ini", "key")
Entгo sempre deixe:
pawn Код:
public OnFilterScriptExit() {
    INI_Exit();
    return true;
}

** Importante
- Se vocк tem arquivos escritos por DOF2 ou Y_Ini este sistema nгo serб compatнvel pois meu sistema usa o mйtodo formal para escrita de escrita em arquivos ini, sem espaзo entre as keys
Quote:

key=value

e nгo
Quote:

key = value

http://en.wikipedia.org/wiki/INI_file

Porйm й TOTALMENTE compatнvel com Dini e outros sistemas conhecidos

Funзхes disponнveis:
pawn Код:
// Funзхes Atuais:

//   CallBack INI_WriteString("arquivo", "key", "valor")
//   CallBack INI_WriteFloat("arquivo"",key", valor)
//   CallBack INI_WriteInt("arquivo","key", valor)
//   CallBack INI_WriteBool("arquivo","key", bool:valor)

//   CallBack INI_ReadString("arquivo", "key")
//   CallBack INI_ReadInt("arquivo", "key")
//   CallBack INI_ReadFloat("arquivo","key")
//   CallBack INI_ReadBool("arquivo","key")

//   CallBack INI_Create("arquivo")
//   CallBack INI_Delete("arquivo")
//   CallBack INI_Open("arquivo")
Download
-> http://pastebin.com/gjEJMnH5

Com estб velocidade й permitido que vocк possa colocar em atй 50 escritas/leituras em OnPlayerUpdate
Salve em bini.inc por favor.

FAQ
Antes de seguir as resoluзхes de problemas abaixo verifique sua versгo й atual. Baixando esta:
http://pastebin.com/gjEJMnH5


Arquivo nгo salvando
Caso for um ъnico arquivo, veja se

Se nгo estiver salvando o ъltimo arquivo й porque o servidor nгo estб sendo fechado corretamente. Quando vocк nгo fecha por RCON EXIT o OnGameModeExit/FilterScriptExit nгo sгo chamados e logo INI_Exit tambйm nгo й !!

Caso for vбrios arquivos tente aumentar o valor max_lines_file para acima de 999


Exemplo
pawn Код:
#define max_lines_file  5000
Servidor crashando
Certifique-se se antes de usar algum arquivo INI_Open/INI_READ o arquivo existe. Use
pawn Код:
if(fexist(#arquivo.ini)) // o arquivo existe
Ocupando muito AMX
Nem sempre o que ocupa muito amx й lento. Bini usa um sistema avanзado de cache, onde tudo й registrado no amx em tempo real. Mas й tudo registrado no AMX, nгo ocupa nada de memуria do seu computador. Sу ocuparб memуria se de alguma forma outros fatores externos a Bini ultrapassarem isto.

http://pt.wikipedia.org/wiki/Cache
Desenvolvimento Geral:
Desenvolvido por Bruno da Silva


Agradecimentos a:
Leonado1434 (achou um pequeno bug em INI Open)
[S]trong (me ajudou na primeira versгo da include.)

Projeto [iPs]TeaM ©
Reply


Messages In This Thread
Bini (INI FILES) (V4.1) - by ipsBruno - 24.06.2012, 13:08
Re: Bini (INI FILES) Versao 4 - by humildadeforever - 24.06.2012, 13:16
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 13:26
Re: Bini (INI FILES) Versao 4 - by EditPawn - 24.06.2012, 13:34
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 13:38
Re: Bini (INI FILES) Versao 4 - by BreakDriFT - 24.06.2012, 13:42
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 13:46
Re: Bini (INI FILES) Versao 4 - by humildadeforever - 24.06.2012, 13:49
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 13:54
Re: Bini (INI FILES) Versao 4 - by humildadeforever - 24.06.2012, 14:00
Re: Bini (INI FILES) Versao 4 - by Edu33 - 24.06.2012, 14:20
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 24.06.2012, 14:26
Re: Bini (INI FILES) Versao 4 - by pWesley - 24.06.2012, 14:36
Re: Bini (INI FILES) Versao 4 - by Ricop522 - 24.06.2012, 14:36
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 14:46
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 14:53
Re: Bini (INI FILES) Versao 4 - by paulor - 24.06.2012, 17:34
Re: Bini (INI FILES) Versao 4 - by Mr.Hardy - 24.06.2012, 20:34
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 24.06.2012, 20:36
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 21:32
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 24.06.2012, 21:44
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 21:51
Re: Bini (INI FILES) Versao 4 - by leonardo1434 - 24.06.2012, 21:57
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 24.06.2012, 21:59
Re: Bini (INI FILES) Versao 4 - by paulor - 24.06.2012, 22:17
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 22:23
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 24.06.2012, 22:30
Re: Bini (INI FILES) Versao 4 - by paulor - 24.06.2012, 22:52
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 24.06.2012, 23:19
Re: Bini (INI FILES) Versao 4 - by paulor - 24.06.2012, 23:32
Re: Bini (INI FILES) Versao 4 - by leonardo1434 - 30.06.2012, 08:53
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 30.06.2012, 15:18
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 30.06.2012, 15:38
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 30.06.2012, 15:41
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 30.06.2012, 15:44
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 30.06.2012, 15:46
Re: Bini (INI FILES) Versao 4 - by paulor - 30.06.2012, 15:48
Re: Bini (INI FILES) Versao 4 - by leonardo1434 - 30.06.2012, 15:51
Re: Bini (INI FILES) Versao 4 - by ipsBruno - 30.06.2012, 15:51
Re: Bini (INI FILES) Versao 4 - by Bruno Pereira - 30.06.2012, 15:54

Forum Jump:


Users browsing this thread: 2 Guest(s)