Don't click here unless you want to be banned.

LSL Wiki : Benchmarks

HomePage :: PageIndex :: RecentChanges :: RecentlyCommented :: UserSettings :: You are crawl338.us.archive.org
Here are some rough benchmarks of intra-object communication methods and the main methods for parsing communication messages performed by HughPerkins, MoHax and others.

Should be noted that script delays will effect the code as will minimum event delay.--BW

llMessageLinked: About 40 messages per second, when sending in bursts of 5 with llSleep(0.1) between bursts.
Strangely, sending as a single burst *reduced* the receive speed, and also caused a lot of message loss, presumably because the events queue in the receiving script was flooded.
Presumably the sending is *very* fast and not at all delayed, but the receiving script (a) is blocked by messages being added to the queue (?) and (b) is somewhat more delayed than the sending script, or possibly just (a).

IntraSL Email: Send delay: 20 seconds
Receive delay: about 1 second

llParseString2List: About 40 commands per second.

llGetSubString: Surprisingly only about 26 commands per second. [36% slower than llParseString2List (about two-thirds as fast), see script below]

llStringToBase64/llBase64ToString: 3 to 4 commands per second(!). See the comments at llStringToBase64 for details.


Appendix: core scripts used for benchmarking

llMessageLinked, Sender script:
default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        llSay(0, "Touched.");
        integer i;
        for( i = 0; i < 40; i++ )
        {
            llMessageLinked( LINK_SET, 0, (string)i, "" );
            llMessageLinked( LINK_SET, 0, (string)i, "" );
            llMessageLinked( LINK_SET, 0, (string)i, "" );
            llMessageLinked( LINK_SET, 0, (string)i, "" );
            llMessageLinked( LINK_SET, 0, (string)i, "" );
            llSleep(0.1);
        }
    }
}

llMessageLinked, Receiver Script:
integer iNumReceived = 0;

default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }
    link_message( integer sendernum, integer num, string message, key id )
    {
        iNumReceived++;
        if( iNumReceived % 5 == 0 )
        {
            llSetText( (string)iNumReceived, <1,1,1>, 1.0 );
        }
    }
}

llParseString2List:
default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        llSay(0, "Touched.");
        integer i;
        string sTestString = "TEST-=-" + (string)llGetKey() + "-=-1-=-asdfsdf";
        for( i = 0; i < 200; i++ )
        {
            list args;
            args = llParseString2List( sTestString, ["-=-"], [] );
            if( i % 5 == 0 )
            {
                llSetText( (string)i, <1,1,1>, 1.0 );
            }
        }
    }
}

llGetSubString
For this comparison the following test code was used and the appropriate lines simply commented out to test each:
string data = "some,thing,else";
integer iterations = 4000;

test()
{
    integer i;
    for (i;i<iterations;++i)
    {
        // llParseString2List Method
        list mylist = llParseString2List(data,[","],[]);
        string one = llList2String(mylist,0);
        string two = llList2String(mylist,1);
        string three = llList2String(mylist,2);
        
        // llGetSubString Method
        //string one = llGetSubString(data,0,3);
        //string two = llGetSubString(data,5,9);
        //string three = llGetSubString(data,11,14);
        
        // use only for one iteration test to confirm parsing
        //llOwnerSay("one: " + one + " two: " + two + " three: " + three);
        
    }
}

time()
{
    llResetTime();
    llSay(0, "Starting tests...");
    test();
    float elapsed = llGetTime();
    llSay(0, "Finished " + (string) iterations + " iterations in " + (string) elapsed + "s (" +
             (string) (iterations/elapsed) + " iterations/second)");

}

default
{
    state_entry() { time(); }
    touch_start(integer num) { time(); }
}

// iterations/sec for 4000 iterations on Blush
// llGetSubString:     163, 161, 170, 167, 166 : 165 average : 36% slower (about two-thirds as fast)
// llParseString2List: 220, 224, 235, 219, 226 : 225 average :


Jasa SEO Jasa SEO Murah Sepatu Online Toko Sepatu Online Sepatu Sepatu Murah Sepatu Safety Sepatu Futsal Cheapes Hostgator Coupon Link Booking Televisori offerte Notebook Offerte Berita Terkini Internet Marketer Muda Internet Marketer Indonesia Portatile Apple RDAnet Lorks Karikatur Bisnis Modal Kecil Bisnis UKM Berita Terbaru Iklan Baris Jasa SEO Jasa SEO Murah SEO Indonesia Konsultan SEO SEO Belajar SEO Kursus SEO Kursus SEO Murah Jam Tangan Casio Jam Tangan Casio Jam Tangan Murah Jam Tangan Grosir Baju Terbaru Grosir Baju Baju Terbaru Grosir Baju Murah Bisnis Online Belajar SEO Kerupuk Kerupuk kulit Social Bookmark Dofollow Social Bookmark Kumpulan Puisi Kirim Puisi bola hantu Penumbuh Rambut Penumbuh Rambut timbangan WBC Wonogiri Jasa SEO Murah Jasa SEO Jam Tangan Murah
There is no comment on this page. [Display comments/form]