Tanga 131 Odesláno: 5. Červenec, 2014 Share Odesláno: 5. Červenec, 2014 Tento príspevok nie je určený pre nováčikov - ani ho nekomentujte prosím. Nech každý uváži či je nováčik, alebo nie.Úvod:Na začiatok ďakujem vEndovi za kódy k testovaniu rýchlosti y_ini a za skúšku môjho includu.Ešte by som chcel povedať, že tento môj includ snáď nebude také zlyhanie ako môj predošlý includ na prácu so súbormi. Za ten sa svetu ospravedlňujem.Y_less využil to, že prístup k RAM je rýchlejší než HDD. Vytvoril premennú, ktorá sa správa ako buffer - zapisuje na HDD až keď je buffer plný. Ja som zvýšil používanie RAM v mojom skripte oproti y_lessovi a nepoužívam tie vecičky ako tag, ...Rýchlosť: Porovnanie pri čítaní stringov: Dini: 34059 yini: 15091msMôj: 10893 Pri čítaní reťazcov pri správnom nastavení includu je ten môj skoro o tretinu rýchlejší.Testovací skript #include <a_samp> #include <YSI\y_ini> #include <subory> #include <Dini> #define MAX 100000 new stri[RIADOK_DLZKA]; INI:test[](name[],value[]) { INI_String("Riadok1",stri,sizeof(stri)); INI_String("Riadok2",stri,sizeof(stri)); INI_String("Riadok3",stri,sizeof(stri)); INI_String("Riadok4",stri,sizeof(stri)); return 1; } main() { new Subor:subor; new cas = GetTickCount(); for (new i; i < MAX; i++) { dini_Get("test.ini", "ho*no"); dini_Get("test.ini", "Riadok1"); dini_Get("test.ini", "Riadok2"); dini_Get("test.ini", "Riadok3"); dini_Get("test.ini", "Riadok4"); } printf("Dini: %dms", GetTickCount() - cas); cas = GetTickCount(); for (new i; i < MAX; i++) INI_Load("test.ini"); printf("yini: %dms", GetTickCount() - cas); cas = GetTickCount(); for (new i; i < MAX; i++) { /* ked to bolo vo funkcii ako ini_load, nebola tam badatelna strata casu */ subor = OtvoritSubor("test.ini", 1); PrecitatString(subor, "ho*no", stri); PrecitatString(subor, "Riadok1", stri); PrecitatString(subor, "Riadok2", stri); PrecitatString(subor, "Riadok3", stri); PrecitatString(subor, "Riadok4", stri); ZatvoritSubor(subor, 1); } printf("Moj: %dms\n\n", GetTickCount() - cas); return 0; } Porovnanie pri zapisovaní stringov: dini: 70529ms yini: 14736msMoj: 11301ms Opäť takmer o tretinu rýchlejšie.Testovací skript: #include <a_samp> #include <YSI\y_ini> #include <subory> #include <Dini> #define MAX 10000 main() { new Subor:subor, INI:filescript; VytvoritSubor("test.txt"); print("Testovanie rychlosti zapisu - string:"); new cas = GetTickCount(); for (new i; i < MAX; i++) { dini_Set("test.txt", "textik", "hodnota"); dini_Set("test.txt", "text1", "hodnota"); dini_Set("test.txt", "text2", "hodnota"); dini_Set("test.txt", "text3", "hodnota"); dini_Set("test.txt", "text4", "hodnota"); } printf("dini: %dms", GetTickCount() - cas); cas = GetTickCount(); for (new i; i < MAX; i++) { filescript = INI_Open("yini.txt"); INI_WriteString(filescript,"textik","hodnota"); INI_WriteString(filescript,"text1","hodnota"); INI_WriteString(filescript,"text2","hodnota"); INI_WriteString(filescript,"text3","hodnota"); INI_WriteString(filescript,"text4","hodnota"); INI_Close(filescript); } printf("yini: %dms", GetTickCount() - cas); cas = GetTickCount(); for (new i; i < MAX; i++) { subor = OtvoritSubor("test.txt", 0); ZapisatString(subor, "textik", "hodnota"); ZapisatString(subor, "textik1", "hodnota1"); ZapisatString(subor, "textik2", "hodnota2"); ZapisatString(subor, "textik3", "hodnota3"); ZapisatString(subor, "textik4", "hodnota4"); ZatvoritSubor(subor, 0); } printf("moj: %dms", GetTickCount() - cas); return 0; } Použitie: To už sa mi nechce písať, kuknite si hore testovacie skripty.PrecitatString(subor, "kluc", str); do str uloží načítaný text.Len dodám, že čítanie klúča, ktorý nie je v súbore zamrazí server.Súbor pred otvorením treba vytvoriť - VytvoritSubor(menosuboru); resp skontrolovať SuborExistuje(meno);Tá nula / jednotka pri zatvorení a otvorení znamená spôsob prístupu. 1 = čítanie, 0 = zápis.Includ by ste si mali optimalizovať - otvorte ho a hore do max riadkov si zapíšte kolko riadkov bude mať váš súbor.(Ak dáte menej, nič sa nepoškodí, ale bude to pomalšie. AK dáte viac, zaberie to viac pamate v RAM).Ešte taký optimalizačný typ - aby ste sa vyhli používaniu strval, ... (pri zápisoch čísel) boolean sa dá lahko imitovať - uložte "0", alebo "1". Pri čítaní možno testovať takto:PrecitatString(subor, "booleacek", str);if (str[0] - '0') ... EDIT: LOL, zabudol som link na stiahnutie - tu. Link to comment Share on other sites More sharing options...
Globální moderátor Hip 191 Odesláno: 5. Červenec, 2014 Globální moderátor Share Odesláno: 5. Červenec, 2014 no, takže nezkoušel jsem to ale jinak jestli to tak fakt je tak by to docela ušetřilo zase prostor, možná začnu používat jestli se mi to osvědčí Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now