Difference between revisions of "Efficiency Tester"
m (For a less brief discussion, see: LSL Script Efficiency) |
m (sort the paragraphs - give the reader what matters most to the reader first) |
||
Line 1: | Line 1: | ||
{{LSL Header}} | {{LSL Header}} | ||
Want to see how small some code is? | Q1: Want to see how small some code is? | ||
A: Add three copies of your code to a script, call [[llGetFreeMemory]] to count free space, and start deleting copies. After deleting each copy, you should see a consistent savings in free space, ''i.e'', the code space cost of your code. | |||
Q2: Want to see how fast some code is? | |||
A: Run your code inside code like this example to call your code time and again to measure the consequent change in [[llGetTimestamp]]. | |||
<pre> | <pre> | ||
Line 50: | Line 52: | ||
Copy-edited by [[User:Xaviar Czervik|Xaviar Czervik]], then modified by [[User:Strife Onizuka|Strife Onizuka]], then further edited as the history of this article shows. | Copy-edited by [[User:Xaviar Czervik|Xaviar Czervik]], then modified by [[User:Strife Onizuka|Strife Onizuka]], then further edited as the history of this article shows. | ||
For a less brief discussion, see: [[LSL Script Efficiency]] | For a less brief discussion, see: [[LSL Script Efficiency]]. Please understand, we don't mean to be arguing for many different ways to measure the costs of code. We do mean to be building a consensus on best practices, in one considerately short article constructed from a neutral point of view. | ||
{{LSLC|Library}}{{LSLC|Examples}} | {{LSLC|Library}}{{LSLC|Examples}} |
Revision as of 04:49, 16 October 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Q1: Want to see how small some code is?
A: Add three copies of your code to a script, call llGetFreeMemory to count free space, and start deleting copies. After deleting each copy, you should see a consistent savings in free space, i.e, the code space cost of your code.
Q2: Want to see how fast some code is?
A: Run your code inside code like this example to call your code time and again to measure the consequent change in llGetTimestamp.
//IMPORTANT: Only perform tests in an empty region. // To reduce contamination and be sure to wearing no attachments. // Preferably do tests in a private sim with one on it. // Don't move while performing the test. // There is a margin of error so run the tests multiple times to determine it. integer time() { // count milliseconds since the day began string stamp = llGetTimestamp(); // "YYYY-MM-DDThh:mm:ss.ff..fZ" return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh (integer) llGetSubString(stamp, 14, 15) * 60000 + // mm llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f } default { state_entry() { //test variables float counter; //framework variables float i = 0; float j = 0; float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead float t0 = time(); do { //test counter += 1; }while (++i < max); float t1 = time(); do ; while (++j < max); float t2 = time();//remove the time required by the framework float elapsed = ((t1 - t0) - (t2 - t1))/max; llOwnerSay("The function in the loop took a total of " + (string)elapsed + " milliseconds."); } }
Copy-edited by Xaviar Czervik, then modified by Strife Onizuka, then further edited as the history of this article shows.
For a less brief discussion, see: LSL Script Efficiency. Please understand, we don't mean to be arguing for many different ways to measure the costs of code. We do mean to be building a consensus on best practices, in one considerately short article constructed from a neutral point of view.