Put the following two scripts in the same prim. Under mono they exchange about link 22 messages per second. Under the old VM they exchange about 44 messages per second.
=== Script 1 ===========================================================================
integer count;
integer limit = 100;
float start;
default
{
touch_start(integer total_number)
{
state run;
}
}
state run
{
state_entry()
{
llOwnerSay("Running");
count = 0;
start = llGetTime();
llMessageLinked(LINK_THIS, 1, "", NULL_KEY);
}
touch_start(integer total_number)
{
llOwnerSay("Abort");
state default;
}
link_message(integer sender, integer num, string str, key id)
{
if (num == 2)
{
if (++count < limit)
{
llMessageLinked(LINK_THIS, 1, "", NULL_KEY);
}
else
{
float end = llGetTime();
llOwnerSay("Elapsed: " + (string)(end-start) + " MPS: " + (string)((limit*2)/(end - start)));
state default;
}
}
}
}
=== Script 1 ===========================================================================
default
{
link_message(integer sender, integer num, string str, key id)
{
if (num == 1)
{
llMessageLinked(LINK_THIS, 2, "", NULL_KEY);
}
}
}