Paste #29655: Denizen vs. FreneticScript comparison Feb 2016

Date: 2016/02/03 23:48:33 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


# RESULTS:

# Denizen ran the test in 53.127 seconds... FreneticScript ran the test in 0.608 seconds.
# Denizen took roughly 87 times longer to complete the same code.

# //////////////////////////////////////////////////////////////////////


DENIZEN SCRIPT:
load_test:
    type: task
    debug: false
    script:
    - flag server load_test_counter:0
    - define count 100000
    - define time_start <server.current_time_millis>
    - repeat <def[count]>:
      - define x <server.flag[load_test_counter]>
      - define y <def[x].add[1]>
      - flag server load_test_counter:<def[y]>
    - define time_end <server.current_time_millis>
    - narrate "Completed <def[count]> loops in <def[time_end].sub_int[<def[time_start]>]>ms!"

# activated via: ex run load_test instantly

# Result: 53127ms

# //////////////////////////////////////////////////////////////////////

FRENETIC SCRIPT:
function define LOAD_TEST
{
    debug minimal; // Was this needed to mark I forget
    define count 100000;
    set LOAD_TEST_TEMP_COUNTER 0;
    define time_start <{util.current_time_utc.total_milliseconds}>;
    repeat <{var[count]}>
    {
        define x <{cvar[LOAD_TEST_TEMP_COUNTER].value_number}>;
        define y <{var[x].add[1]}>;
        set LOAD_TEST_TEMP_COUNTER <{var[y]}>;
    }
    define time_end <{util.current_time_utc.total_milliseconds}>;
    // TODO: Reduce need for to_number here
    echo "Completed<{text_color.emphasis}> <{cvar[LOAD_TEST_TEMP_COUNTER]}> <{text_color.base}>loops in<{text_color.emphasis}> <{var[time_end].to_number.subtract[<{var[time_start]}>]}> <{text_color.base}>milliseconds!";
}

# activated via: call run load_test

# Result: 608ms