Would you like to react to this message? Create an account in a few clicks or log in to continue.

    [TuT] Testujeme svoje Scripty

    avatar
    QWER
    Znalec


    Posts : 60
    Join date : 28.04.2011

    [TuT] Testujeme svoje Scripty Empty [TuT] Testujeme svoje Scripty

    Odoslať pre QWER So apríl 30, 2011 11:04 pm

    Určite mnohých z vás pri jenom scripte npr. TIP (timer + scmta) napadne viac spôsobov ako na to. Mám riešenie ! Otestujte oba, a ten čo bude rýchlejší použite. Čím rýchlejší, tým menej sa server namáha (by y_less). Ako na to ? no použijeme GetTickCount. GetTickCount zistuje uptime servera v MS takže začneme.

    Neviete sa rozhodnúť medzi switch alebo if tak sa rozhodnete otestovať si oba scripty tak ideme na to

    kód:
    new Old[2];
    new New[2];
    teraz ideme spraviť script
    kód:
    forward msg();
    public msg(){

    new ran = random(5);
    switch(ran){
    case 0: SCMTA(COLOR_RED,"0");
    case 1: SCMTA(COLOR_RED,"1");
    case 2: SCMTA(COLOR_RED,"2");
    case 3: SCMTA(COLOR_RED,"3");
    case 4: SCMTA(COLOR_RED,"4");
    }

    new ran2 = random(5); // ja viem že stačí jedna premena
    if(ran2 == 0) SCMTA(COLOR_RED,"0");
    if(ran2 == 1) SCMTA(COLOR_RED,"1");
    if(ran2 == 2) SCMTA(COLOR_RED,"2");
    if(ran2 == 3) SCMTA(COLOR_RED,"3");
    if(ran2 == 4) SCMTA(COLOR_RED,"4");
    }
    a máme script teraz tam dáme naše premenné a gettickcount

    kód:
    forward msg();
    public msg(){
    Old[0] = GetTickCount(); // zistíme uptime serveru pred prvým scriptom a uložíme do premeny
    new ran = random(5);
    switch(ran){
    case 0: SCMTA(COLOR_RED,"0");
    case 1: SCMTA(COLOR_RED,"1");
    case 2: SCMTA(COLOR_RED,"2");
    case 3: SCMTA(COLOR_RED,"3");
    case 4: SCMTA(COLOR_RED,"4");
    }
    New[0] = GetTickCount(); // zistíme uptime serveru po prvom scripte
    Old[1] = GetTickCount();// uptime serveru pred druhým scriptom
    new ran2 = random(5); // ja viem že stačí jedna premena
    if(ran2 == 0) SCMTA(COLOR_RED,"0");
    if(ran2 == 1) SCMTA(COLOR_RED,"1");
    if(ran2 == 2) SCMTA(COLOR_RED,"2");
    if(ran2 == 3) SCMTA(COLOR_RED,"3");
    if(ran2 == 4) SCMTA(COLOR_RED,"4");
    New[1] = GetTickCount(); // uptime serveru po druhom scripte
    }
    a teraz výsledok doplníme

    kód:
    forward msg();
    public msg(){
    Old[0] = GetTickCount(); // zistíme uptime serveru pred prvým scriptom a uložíme do premeny
    new ran = random(5);
    switch(ran){
    case 0: SCMTA(COLOR_RED,"0");
    case 1: SCMTA(COLOR_RED,"1");
    case 2: SCMTA(COLOR_RED,"2");
    case 3: SCMTA(COLOR_RED,"3");
    case 4: SCMTA(COLOR_RED,"4");
    }
    New[0] = GetTickCount(); // zistíme uptime serveru po prvom scripte
    Old[1] = GetTickCount();// uptime serveru pred druhým scriptom
    new ran2 = random(5); // ja viem že stačí jedna premena
    if(ran2 == 0) SCMTA(COLOR_RED,"0");
    if(ran2 == 1) SCMTA(COLOR_RED,"1");
    if(ran2 == 2) SCMTA(COLOR_RED,"2");
    if(ran2 == 3) SCMTA(COLOR_RED,"3");
    if(ran2 == 4) SCMTA(COLOR_RED,"4");
    New[1] = GetTickCount(); // uptime serveru po druhom scripte

    printf("Switch:\n Old: %d New: %d\n Difference:%d\n IF\n Old: %d\n New: %d\n Difference:%d",Old[0],New[0],New[0]-Old[0],Old[1],New[1],New[1]-Old[1]);
    }
    to je všetko
    rozdiel zistíme:
    nový čas - starý čas
    tak isto sa rátajú aj roky keď viete rok narodenia npr.
    2011-1995=16
    a teraz vám ukážem ako som testoval y_ini

    TU JE http://pastebin.com/FKqWRh0h

    Pre viditeľný rozdiel si testovací script "znásobíme" Pomocou cykla... jedno či už for alebo wile ale základom je rovnaký spôsob...
    kód:

    main(){
    new x = 5, y = 6, z = 7, a= 8, b = 9, c = 10;
    new Old1,
        New1;
    Old1 = GetTickCount();
    for( i < 10000 ; i++){
    if(x == 5){
    if(y == 6){
    if(z == 7){
    if(a == 8){
    if(b == 9){
    if(C == 10){
    SendClientMessageToAll(0xFF000000,"Ahoj");
    }}}}}}}
    New1 = GetTickCount();
    printf("A %d",New1-Old1);
    Old1 = GetTickCount();
    for( i < 10000 ; i++){
    if(x == 5 && y == 6 && z == 7 && a == 8 && b == 9 && C == 10){
    SendClientMessageToAll(0xFF000000,"Ahoj");
    }}
    New1 = GetTickCount();
    printf("B %d",New1-Old1);
    }


    a keď bude A menšie ako B test tak A sa oplatí použiť... lebo čím dlhšie to trvá, tým viac to zaťažuje (npr. musí to stále čítať && a podobne...)

    Dúfam že ste si niečo vzali k srdcu a budete to využívať.
    S pozdravom
    QWER

      Práve je Ne jún 02, 2024 10:20 am