[Include] rFile - Faster than y_ini
#1

Author: RPS (aka Diler)
Version: 1.0 R2
Last Update: 06.11.2010

It is a fast and simple system file operations


Functions:

Код:
Read(playerid) - function read a player file (use in OnPlayerConnect/Spawn)
Save(playerid) - function saves the data players (use in OnPlayerDisconnect)
Delete(playerid) - function removes the file player (use after Save)
DeleteOption(playerid, option[]) - function removes option in player file

ReadFile(const filename[], const ID) - function read a file
SaveFile(const filename[], const ID) - function save a file
DeleteFile(filename[]) - function removes the file
DeleteFileOption(const ID, option[]) - function removes option in file

rSetStr(playerid, option[], definition[]) - function save string to file
rSetInt(playerid, option[], definition) - functtion save integer to file
rSetFloat(playerid, option[], Float:definition) - function save float to file

rGetStr(playerid, option[]) - function returns the definitions of the options
rGetInt(playerid, option[]) - function returns the definitions of the options
rGetFloat(playerid, option[]) - function returns the definitions of the options
IsSet(playerid, option[]) - function returns when it finds an option, 0 if not
How to use ?
Simple code:
Код:
#include <a_samp>
#include <rFile>

public OnFilterScriptInit()
{
    #define ID 51
    ReadFile("rFile.ini", ID);
    rSetStr(ID, "Str", "test");
    rSetInt(ID, "Int", 1);
    rSetFloat(ID, "Float", 1.234);
    printf("%s | %d | %f", rGetStr(ID, "Str"), rGetInt(ID, "Int"), rGetFloat(ID, "Float"));
    DeleteFileOption(ID, "Str");
    SaveFile("rFile.ini", ID);
    return 1;
}
and...
Код:
public OnPlayerConnect(playerid)
{
    Read(playerid);
    rSetInt(playerid, "CountConnect", rGetInt(playerid, "CountConnect")+1);
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    Save(playerid);
    return 1;
}
Comparison
Код:
#include <a_samp> 
#include <YSI\y_ini> 
#include <rFile> 

#define MAX 1000 
public OnFilterScriptInit() 
{ 
    new 
        str[128], 
        s = GetTickCount(); 

    new INI:tt = INI_Open("y_ini.ini"); 
    for(new i; i < MAX; i++) 
    { 
       format(str, sizeof str, "test%d", i); 
       INI_WriteString(tt, str, "test"); 
    } 
    INI_Close(tt); 
    printf("[Y_INI]: %d", GetTickCount()-s); 

    s = GetTickCount(); 
    ReadFile("rFile.ini", 50); 
    for(new i; i < MAX; i++) 
    { 
       format(str, sizeof str, "test%d", i); 
       rSetStr(50, str, "test"); 
    } 
    SaveFile("rFile.ini", 50); 
    printf("[R_FILE]: %d", GetTickCount()-s); 
    return 1; 
}
Result:
The first time - 458 (y_ini) vs 204 (rFile) [ms]
The second time - 718 (y_ini) vs 87 (rFile) [ms]

Download
Pastebin -> http://pastebin.com/4DmWp8Bk


Код:
#define MAX_PLAYERSS 50
Replace number to server slots !!

Thank you for your time and sorry for my bad english
Reply
#2

Is it possible, you can proof that it's faster?
Reply
#3

Added
Reply
#4

Probably its simple test but for large sessions it will be slow - isnt it?

For about 100 players how fast it would save?

Edit: its realy simple saving... and oyu are not using player file saving (y_ini) but simple file. .
Reply
#5

new FileVar[MAX_FILES][10000];
why 10000??!?!?!?!? I think MAX_FILES is aka MAX_PLAYERS and 10000 is 'cells' or wtf it's called .
Reply
#6

Player files are the same as regular INI files, it just depends how you set them up with different keys.

@Gabrivo: A maximum file's size (as in characters written) isn't necessarily going to be MAX_PLAYERS or 500.
Reply
#7

Maybe faster, but not as useful.
Reply
#8

It is fast and useful, although it consumes much memory
Reply
#9

It's nice, if it's faster. I believe your compare / benchmark xD.
Whatever, I have an tip. You made an 'MAX_PLAYERSS'.
You can also undefine MAX_PLAYERS and then define it again! Example:

pawn Код:
#undef MAX_PLAYERS
#define MAX_PLAYERS 500 //Max players of your server


- Kevin
Reply
#10

Can you post the benchmark results if you use 500 as MAX_PLAYERS?
If you tested with 50, yes ofcourse it will be faster.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)