View Single Post
Old 23/04/2020, 02:01 AM   #3
F1N4L
High-roller
 
F1N4L's Avatar
 
Join Date: Jun 2013
Posts: 2,723
Reputation: 260
Default Re: Entendendo os sistemas de salvamento (DOF2, dini, ...)

Bom tutorial, bem explicado.

Fiz um breve bench de algumas includes para complementar.
Não é totalmente preciso, mas da pra ter uma base.
Quote:
--------- Benchmark ---------

Include: Bini | Método: Escrita | Média: 111ms
Include: Bini | Método: Leitura | Média: 1ms

Include: Dof2 | Método: Escrita | Média: 103ms
Include: Dof2 | Método: Leitura | Média: 7ms

Include: Dini | Método: Escrita | Média: 4137ms
Include: Dini | Método: Leitura | Média: 71ms

Include: Dini2 | Método: Escrita | Média: 126ms
Include: Dini2 | Método: Leitura | Média: 2ms

Include: bCini | Método: Escrita | Média: 1877ms
Include: bCini | Método: Leitura | Média: 67ms

--------- Fim Benchmark ---------
Código:
Code:
print("\n\n\n--------- Benchmark ---------\n");

    new 
        tentat[10],
        tempo[2],
        media;

	for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            INI_Open("bini.txt");
            INI_WriteString("bini.txt", "key_1", "valor1");
            INI_WriteString("bini.txt", "key_2", "valor2");
            INI_WriteString("bini.txt", "key_3", "valor3");
            INI_WriteString("bini.txt", "key_4", "valor4");
            INI_WriteString("bini.txt", "key_5", "valor5");
            INI_WriteFloat("bini.txt", "key_6", 999.00);
            INI_WriteFloat("bini.txt", "key_7", 999.00);
            INI_WriteFloat("bini.txt", "key_8", 999.00);
            INI_WriteFloat("bini.txt", "key_9", 999.00);
            INI_WriteFloat("bini.txt", "key_10", 999.00);
            INI_WriteInt("bini.txt", "key_11", 999);
            INI_WriteInt("bini.txt", "key_12", 999);
            INI_WriteInt("bini.txt", "key_13", 999);
            INI_WriteInt("bini.txt", "key_14", 999);
            INI_WriteInt("bini.txt", "key_15", 999);
            INI_Save();
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: Bini | Método: Escrita | Média: %ims", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            INI_Open("bini.txt");
            INI_ReadString("bini.txt", "key_1");
            INI_ReadString("bini.txt", "key_2");
            INI_ReadString("bini.txt", "key_3");
            INI_ReadString("bini.txt", "key_4");
            INI_ReadString("bini.txt", "key_5");
            INI_ReadFloat("bini.txt", "key_6");
            INI_ReadFloat("bini.txt", "key_7");
            INI_ReadFloat("bini.txt", "key_8");
            INI_ReadFloat("bini.txt", "key_9");
            INI_ReadFloat("bini.txt", "key_10");
            INI_ReadInt("bini.txt", "key_11");
            INI_ReadInt("bini.txt", "key_12");
            INI_ReadInt("bini.txt", "key_13");
            INI_ReadInt("bini.txt", "key_14");
            INI_ReadInt("bini.txt", "key_15");
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: Bini | Método: Leitura | Média: %ims\n", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            if(!DOF2::FileExists("dof2.txt")) DOF2::CreateFile("dof2.txt");
            DOF2::SetString("dof2.txt", "key_1", "valor1");
            DOF2::SetString("dof2.txt", "key_2", "valor2");
            DOF2::SetString("dof2.txt", "key_3", "valor3");
            DOF2::SetString("dof2.txt", "key_4", "valor4");
            DOF2::SetString("dof2.txt", "key_5", "valor5");
            DOF2::SetFloat("dof2.txt", "key_6", 999.00);
            DOF2::SetFloat("dof2.txt", "key_7", 999.00);
            DOF2::SetFloat("dof2.txt", "key_8", 999.00);
            DOF2::SetFloat("dof2.txt", "key_9", 999.00);
            DOF2::SetFloat("dof2.txt", "key_10", 999.00);
            DOF2::SetInt("dof2.txt", "key_11", 999);
            DOF2::SetInt("dof2.txt", "key_12", 999);
            DOF2::SetInt("dof2.txt", "key_13", 999);
            DOF2::SetInt("dof2.txt", "key_14", 999);
            DOF2::SetInt("dof2.txt", "key_15", 999);
            DOF2::SaveFile();
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: Dof2 | Método: Escrita | Média: %ims", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            if(!DOF2::FileExists("dof2.txt")) DOF2::CreateFile("dof2.txt");
            DOF2::GetString("dof2.txt", "key_1");
            DOF2::GetString("dof2.txt", "key_2");
            DOF2::GetString("dof2.txt", "key_3");
            DOF2::GetString("dof2.txt", "key_4");
            DOF2::GetString("dof2.txt", "key_5");
            DOF2::GetFloat("dof2.txt", "key_6");
            DOF2::GetFloat("dof2.txt", "key_7");
            DOF2::GetFloat("dof2.txt", "key_8");
            DOF2::GetFloat("dof2.txt", "key_9");
            DOF2::GetFloat("dof2.txt", "key_10");
            DOF2::GetInt("dof2.txt", "key_11");
            DOF2::GetInt("dof2.txt", "key_12");
            DOF2::GetInt("dof2.txt", "key_13");
            DOF2::GetInt("dof2.txt", "key_14");
            DOF2::GetInt("dof2.txt", "key_15");
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: Dof2 | Método: Leitura | Média: %ims\n", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            if(!dini_Exists("dini.txt")) dini_Create("dini.txt");
            dini_Set("dini.txt", "key_1", "valor1");
            dini_Set("dini.txt", "key_2", "valor2");
            dini_Set("dini.txt", "key_3", "valor3");
            dini_Set("dini.txt", "key_4", "valor4");
            dini_Set("dini.txt", "key_5", "valor5");
            dini_FloatSet("dini.txt", "key_6", 999.00);
            dini_FloatSet("dini.txt", "key_7", 999.00);
            dini_FloatSet("dini.txt", "key_8", 999.00);
            dini_FloatSet("dini.txt", "key_9", 999.00);
            dini_FloatSet("dini.txt", "key_10", 999.00);
            dini_IntSet("dini.txt", "key_11", 999);
            dini_IntSet("dini.txt", "key_12", 999);
            dini_IntSet("dini.txt", "key_13", 999);
            dini_IntSet("dini.txt", "key_14", 999);
            dini_IntSet("dini.txt", "key_15", 999);
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: Dini | Método: Escrita | Média: %ims", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            if(!dini_Exists("dini.txt")) dini_Create("dini.txt");
            dini_Get("dini.txt", "key_1");
            dini_Get("dini.txt", "key_2");
            dini_Get("dini.txt", "key_3");
            dini_Get("dini.txt", "key_4");
            dini_Get("dini.txt", "key_5");
            dini_Float("dini.txt", "key_6");
            dini_Float("dini.txt", "key_7");
            dini_Float("dini.txt", "key_8");
            dini_Float("dini.txt", "key_9");
            dini_Float("dini.txt", "key_10");
            dini_Int("dini.txt", "key_11");
            dini_Int("dini.txt", "key_12");
            dini_Int("dini.txt", "key_13");
            dini_Int("dini.txt", "key_14");
            dini_Int("dini.txt", "key_15");
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: Dini | Método: Leitura | Média: %ims\n", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            if(!dini2_Exists("dini2.txt")) dini2_Create("dini2.txt");
            dini2_Set("dini2.txt", "key_1", "valor1");
            dini2_Set("dini2.txt", "key_2", "valor2");
            dini2_Set("dini2.txt", "key_3", "valor3");
            dini2_Set("dini2.txt", "key_4", "valor4");
            dini2_Set("dini2.txt", "key_5", "valor5");
            dini2_FloatSet("dini2.txt", "key_6", 999.00);
            dini2_FloatSet("dini2.txt", "key_7", 999.00);
            dini2_FloatSet("dini2.txt", "key_8", 999.00);
            dini2_FloatSet("dini2.txt", "key_9", 999.00);
            dini2_FloatSet("dini2.txt", "key_10", 999.00);
            dini2_IntSet("dini2.txt", "key_11", 999);
            dini2_IntSet("dini2.txt", "key_12", 999);
            dini2_IntSet("dini2.txt", "key_13", 999);
            dini2_IntSet("dini2.txt", "key_14", 999);
            dini2_IntSet("dini2.txt", "key_15", 999);
            dini2_Timeout("dini2.txt");
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: Dini2 | Método: Escrita | Média: %ims", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            if(!dini2_Exists("dini2.txt")) dini2_Create("dini2.txt");
            dini2_Get("dini2.txt", "key_1");
            dini2_Get("dini2.txt", "key_2");
            dini2_Get("dini2.txt", "key_3");
            dini2_Get("dini2.txt", "key_4");
            dini2_Get("dini2.txt", "key_5");
            dini2_Float("dini2.txt", "key_6");
            dini2_Float("dini2.txt", "key_7");
            dini2_Float("dini2.txt", "key_8");
            dini2_Float("dini2.txt", "key_9");
            dini2_Float("dini2.txt", "key_10");
            dini2_Int("dini2.txt", "key_11");
            dini2_Int("dini2.txt", "key_12");
            dini2_Int("dini2.txt", "key_13");
            dini2_Int("dini2.txt", "key_14");
            dini2_Int("dini2.txt", "key_15");
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: Dini2 | Método: Leitura | Média: %ims\n", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            if(!bCini_Existe("bcini.txt")) bCini_Criar("bcini.txt");
            bCini_SetarTexto("bcini.txt", "key_1", "valor1");
            bCini_SetarTexto("bcini.txt", "key_2", "valor2");
            bCini_SetarTexto("bcini.txt", "key_3", "valor3");
            bCini_SetarTexto("bcini.txt", "key_4", "valor4");
            bCini_SetarTexto("bcini.txt", "key_5", "valor5");
            bCini_SetarFloat("bcini.txt", "key_6", 999.00);
            bCini_SetarFloat("bcini.txt", "key_7", 999.00);
            bCini_SetarFloat("bcini.txt", "key_8", 999.00);
            bCini_SetarFloat("bcini.txt", "key_9", 999.00);
            bCini_SetarFloat("bcini.txt", "key_10", 999.00);
            bCini_SetarInt("bcini.txt", "key_11", 999);
            bCini_SetarInt("bcini.txt", "key_12", 999);
            bCini_SetarInt("bcini.txt", "key_13", 999);
            bCini_SetarInt("bcini.txt", "key_14", 999);
            bCini_SetarInt("bcini.txt", "key_15", 999);
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: bCini | Método: Escrita | Média: %ims", media / 10);

    media = 0;
    for(new tentativas = 0; tentativas < 10; tentativas ++)
    {
        tempo[0] = GetTickCount();
        for(new teste = 0; teste < 100; teste ++)
        {
            if(!bCini_Existe("bcini.txt")) bCini_Criar("dini.txt");
            bCini_GetarTexto("bcini.txt", "key_1");
            bCini_GetarTexto("bcini.txt", "key_2");
            bCini_GetarTexto("bcini.txt", "key_3");
            bCini_GetarTexto("bcini.txt", "key_4");
            bCini_GetarTexto("bcini.txt", "key_5");
            bCini_GetarFloat("bcini.txt", "key_6");
            bCini_GetarFloat("bcini.txt", "key_7");
            bCini_GetarFloat("bcini.txt", "key_8");
            bCini_GetarFloat("bcini.txt", "key_9");
            bCini_GetarFloat("bcini.txt", "key_10");
            bCini_GetarInt("bcini.txt", "key_11");
            bCini_GetarInt("bcini.txt", "key_12");
            bCini_GetarInt("bcini.txt", "key_13");
            bCini_GetarInt("bcini.txt", "key_14");
            bCini_GetarInt("bcini.txt", "key_15");
        }
        tempo[1] = GetTickCount();

        tentat[tentativas] = tempo[1] - tempo[0];
    }
    for(new tentativas = 0; tentativas < 10; tentativas ++)
        media += tentat[tentativas];
    printf("Include: bCini | Método: Leitura | Média: %ims\n", media / 10);

    print("\n--------- Fim Benchmark ---------\n\n\n");
F1N4L is offline   Reply With Quote