<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fuser+Aeon</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fuser+Aeon"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Fuser_Aeon"/>
	<updated>2026-07-27T09:25:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Hans&amp;diff=46395</id>
		<title>LSL Style Guide/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Hans&amp;diff=46395"/>
		<updated>2007-12-30T03:07:55Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Style Guide}}{{LSL Header}}{{RightToc}}&lt;br /&gt;
&lt;br /&gt;
用LSL进行有效的编程,开发者需要在格式化和规范他们的脚本方面依照标准进行实践。&lt;br /&gt;
&lt;br /&gt;
这个设计指南由以下这些准则组成。尽管它们不像语言编译器的规则那样严格，但对编写易于维护的代码仍然非常关键。编程格式最重要的一个方面是你在编写代码过程中使用某种格式的时候，要始终如一。&lt;br /&gt;
&lt;br /&gt;
==通用准则==&lt;br /&gt;
&lt;br /&gt;
很多自己单独编程的人写出来的程序都丑陋得无法阅读，而有待恰当地修改。它们一般都被写成这样：&lt;br /&gt;
&lt;br /&gt;
    default {state_entry(){llSay(0,&amp;quot;Hello World.&amp;quot;);}}&lt;br /&gt;
&lt;br /&gt;
然而，当有人写了一个上万字的程序，能被人理解（或者至少能“看懂”）是很重要的。要做到这一点，程序员可以使用的两个主要方法是使用花括号和缩进。&lt;br /&gt;
&lt;br /&gt;
方式一：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    default {&lt;br /&gt;
        state_entry() {&lt;br /&gt;
            llSay(0, &amp;quot;Hello World.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
方式二：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    default&lt;br /&gt;
    {&lt;br /&gt;
        state_entry()&lt;br /&gt;
        {&lt;br /&gt;
            llSay(0, &amp;quot;Hello World.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
方式一节省了空间，但方式二对初学者来说则更容易阅读。一但某个程序员在实践中使用了特定的格式，阅读那种格式的代码就会变得很容易。前后一致的缩进规则使得两种方式都更容易阅读。在方式一中缩进是标明层次范围的关键标示。&lt;br /&gt;
&lt;br /&gt;
==命名规范==&lt;br /&gt;
&lt;br /&gt;
在Second Life中，有许多命名规范，下面列出的是最常用的。&lt;br /&gt;
&lt;br /&gt;
全局变量（指在整个程序中都要用到的变量）应该以小写字母g开头。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    integer gSelected = 0;&lt;br /&gt;
    string  gMyName = &amp;quot;Please set one&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可变常量(Variable Constants)应全部大写。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    integer CHAT_CHAN = -517265;&lt;br /&gt;
    key OWNER_KEY = llGetOwner();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在用户自定义的函数或事件([[event]])中使用的变量应以下划线开头。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    listen( integer _channel, string _name, key _id, string _message )&lt;br /&gt;
    {&lt;br /&gt;
        if ( _channel == 1 || _id == llGetOwner() )&lt;br /&gt;
        	llOwnerSay(&amp;quot;Hello Avatar&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==让代码条理清晰==&lt;br /&gt;
&lt;br /&gt;
刚开始编程的时候，很多人会在一行代码里调用许多的函数。这使代码变得难以阅读，几乎无法调试除错。下面的例子就是这样的：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
default {&lt;br /&gt;
&lt;br /&gt;
   touch_start(integer n) {&lt;br /&gt;
       integer i = 0;&lt;br /&gt;
       integer index = llListFindList(lst, [llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1))]);&lt;br /&gt;
       if (!~llListFindList(lst, [llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1))]))&lt;br /&gt;
           lst += llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1));&lt;br /&gt;
       llOwnerSay(llList2CSV(lst));&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
再看下面这段代码，功能完全相同，却更简单易懂。比较起来，几乎没人能看懂上面的代码要实现什么目的，而下面的则很容易看懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    touch_start(integer n) {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        string name = llKey2Name(llDetectedKey(i));&lt;br /&gt;
        list nameAsList = llParseString2List(name, [&amp;quot; &amp;quot;], []);&lt;br /&gt;
        string firstName = llList2String(nameAsList, 0);&lt;br /&gt;
        string startPart = llToLower(llGetSubString(firstName, 0, numDigits - 1));&lt;br /&gt;
        integer index = llListFindList(lst, (list)startPart);&lt;br /&gt;
        if (!~index)&lt;br /&gt;
            lst += startPart;&lt;br /&gt;
        llOwnerSay(llList2CSV(lst));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LSL编译器在代码优化方面表现欠佳。因此，为了得到执行速度更快的代码，有必要在以上两种编程样式中找到平衡。在以多行合并方式对代码进行优化之前，必须确保代码没有漏洞并且执行正常。不恰当的优化会导致错误的结果，要始终对优化过的代码进行彻底测试。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    touch_start(integer n) {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        string startPart = llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1));&lt;br /&gt;
        if (!~llListFindList(lst, (list)startPart))&lt;br /&gt;
            lst += startPart;&lt;br /&gt;
        llOwnerSay(llList2CSV(lst));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==脚本结构==&lt;br /&gt;
LSL脚本由expressions, functions, statements, event handlers以及states构成。LSL编译器为脚本规定了一个明确的结构：&lt;br /&gt;
&lt;br /&gt;
#User Defined Variables  (参考 [[LSL_Variables]])&lt;br /&gt;
#User Defined Functions (参考 [[User-defined_functions]])&lt;br /&gt;
#[[default]] State  (参考 [[State]])&lt;br /&gt;
#User Defined States&lt;br /&gt;
&lt;br /&gt;
==编辑器==&lt;br /&gt;
&lt;br /&gt;
编辑LSL代码文件可以使用许多第三方开发的编辑器。&lt;br /&gt;
浏览 [[LSL Alternate Editors]] 可以获取详细信息。&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=46392</id>
		<title>LSL Portal Translation Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=46392"/>
		<updated>2007-12-30T02:39:47Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* :LSL_Editing_Primer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
 Do NOT translate this page. This would result in out-of-sync versions of the master list&lt;br /&gt;
== Welcome to the LSL Portal Translation Project! ==&lt;br /&gt;
This is a community effort to provide a multi-lingual translation of the LSL Portal. Please feel free to edit and add languages to the set. Only reasonably static pages have been selected for translation. News, bugs and patches, automatically generated pages have been set aside. This way, we intend to keep the original pages and their translations as much similar as possible.&lt;br /&gt;
&lt;br /&gt;
LSL Scripters can participate in this project by choosing a wiki page from the list below and translating it into the language(s) they speak fluently. This suggestion list will be updated periodically with new pages. Contributors are welcomed to list themselves and discuss language-specific topics on the proper subpage of the [[LSL_Portal_Translation_Team]] page.&lt;br /&gt;
&lt;br /&gt;
== Procedure to Create a Translation Page ==&lt;br /&gt;
* Choose a page from the Suggested Pages to Translate. If the page is followed by the languages list, it is ready for translation.&lt;br /&gt;
&lt;br /&gt;
* If the page is not ready for translation the &amp;lt;nowiki&amp;gt;{{Multi-lang}}&amp;lt;/nowiki&amp;gt; tag should be included in the main page. If you are not are not familiar with this wiki, feel free to ask for assistance.&lt;br /&gt;
&lt;br /&gt;
* Click the link of the page you have chosen to translate. In the URL bar of your navigator, add a /xx language code. This is how you create the language subpage. Example: LSL_Tutorial/fr to create a french translation of LSL_Tutorial. &lt;br /&gt;
&lt;br /&gt;
====Language Codes====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Code!!Language&lt;br /&gt;
|-&lt;br /&gt;
|de||German&lt;br /&gt;
|-&lt;br /&gt;
|en||English&lt;br /&gt;
|-&lt;br /&gt;
|es||Spanish&lt;br /&gt;
|-&lt;br /&gt;
|fr||French&lt;br /&gt;
|-&lt;br /&gt;
|it||Italian&lt;br /&gt;
|-&lt;br /&gt;
|ko||Korean&lt;br /&gt;
|-&lt;br /&gt;
|ja||Japanese&lt;br /&gt;
|-&lt;br /&gt;
|nl||Dutch&lt;br /&gt;
|-&lt;br /&gt;
|pl||Polish&lt;br /&gt;
|-&lt;br /&gt;
|pt||Portuguese&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hans||Chinese (Simplified) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hant||Chinese (Traditional) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* It is advised to start from a copy of the main page source and insert your translation in place of the original content to achieve the same page layout.&lt;br /&gt;
&lt;br /&gt;
* Once your translation is finished, add your name, date, DONE the Suggested Pages to Translate.&lt;br /&gt;
&lt;br /&gt;
==Suggested Pages to Translate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LSL Portal ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal]]====&lt;br /&gt;
*Chinese - Done&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian - Done 2007-12-28 NickTheDeveloper Masatada&lt;br /&gt;
*Japanese - Started 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Editing_Primer]]====&lt;br /&gt;
* Chinese - Started 2007-12-30 Fuser Aeon&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French - &lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-28 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Done 2007-12-30 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal_Guidelines]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_To-do]]====&lt;br /&gt;
&lt;br /&gt;
=== Developer Resources ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Tutorial]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-29 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Done 2007-12-27 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:Category:LSL_Teachers]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Mentors]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Examples]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Library]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Protocol]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-29 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Done 2007-12-27 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Useful_Function_WishList]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-29 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Style_Guide]]====&lt;br /&gt;
*Chinese - Done 2007-12-29 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-25 Asuka Neely&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Efficiency]]====&lt;br /&gt;
*Chinese - Done 2007-12-22 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-25 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Memory]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-26 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Write_Once_Debug_Everywhere]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-26 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Alternate_Editors]]====&lt;br /&gt;
*Chinese - &lt;br /&gt;
*Dutch - &lt;br /&gt;
*French -&lt;br /&gt;
*German - &lt;br /&gt;
*Italian - &lt;br /&gt;
*Japanese - Done 2007-12-27 Asuka Neely &lt;br /&gt;
*Korean - &lt;br /&gt;
*Polish - &lt;br /&gt;
*Portuguese - &lt;br /&gt;
*Spanish - &lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Test_Harness]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Benchmarking_Scripts]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish -&lt;br /&gt;
&lt;br /&gt;
===  LSL Language Reference ===&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Constants]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Events]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Flow_Control]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Functions]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[For]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Olivier hildyard &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[If]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-03 Fana Dechou&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[While]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Forest Klaar&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-13 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Do-while]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-05 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Jump]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Return]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Operators]]====&lt;br /&gt;
This article is currently incomplete&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Types]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Integer]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Float]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Audrey Bisani&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[String]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Key]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[List]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Vector]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Ol Obscure&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Rotation]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Quaternion]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeiffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[LSL_Variables]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Errors]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Templates===&lt;br /&gt;
&lt;br /&gt;
====[[Template:LSL_Constants_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSLRotGetSet]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-05 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL Function]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=46391</id>
		<title>LSL Portal Translation Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=46391"/>
		<updated>2007-12-30T02:36:34Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* :LSL_Portal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
 Do NOT translate this page. This would result in out-of-sync versions of the master list&lt;br /&gt;
== Welcome to the LSL Portal Translation Project! ==&lt;br /&gt;
This is a community effort to provide a multi-lingual translation of the LSL Portal. Please feel free to edit and add languages to the set. Only reasonably static pages have been selected for translation. News, bugs and patches, automatically generated pages have been set aside. This way, we intend to keep the original pages and their translations as much similar as possible.&lt;br /&gt;
&lt;br /&gt;
LSL Scripters can participate in this project by choosing a wiki page from the list below and translating it into the language(s) they speak fluently. This suggestion list will be updated periodically with new pages. Contributors are welcomed to list themselves and discuss language-specific topics on the proper subpage of the [[LSL_Portal_Translation_Team]] page.&lt;br /&gt;
&lt;br /&gt;
== Procedure to Create a Translation Page ==&lt;br /&gt;
* Choose a page from the Suggested Pages to Translate. If the page is followed by the languages list, it is ready for translation.&lt;br /&gt;
&lt;br /&gt;
* If the page is not ready for translation the &amp;lt;nowiki&amp;gt;{{Multi-lang}}&amp;lt;/nowiki&amp;gt; tag should be included in the main page. If you are not are not familiar with this wiki, feel free to ask for assistance.&lt;br /&gt;
&lt;br /&gt;
* Click the link of the page you have chosen to translate. In the URL bar of your navigator, add a /xx language code. This is how you create the language subpage. Example: LSL_Tutorial/fr to create a french translation of LSL_Tutorial. &lt;br /&gt;
&lt;br /&gt;
====Language Codes====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Code!!Language&lt;br /&gt;
|-&lt;br /&gt;
|de||German&lt;br /&gt;
|-&lt;br /&gt;
|en||English&lt;br /&gt;
|-&lt;br /&gt;
|es||Spanish&lt;br /&gt;
|-&lt;br /&gt;
|fr||French&lt;br /&gt;
|-&lt;br /&gt;
|it||Italian&lt;br /&gt;
|-&lt;br /&gt;
|ko||Korean&lt;br /&gt;
|-&lt;br /&gt;
|ja||Japanese&lt;br /&gt;
|-&lt;br /&gt;
|nl||Dutch&lt;br /&gt;
|-&lt;br /&gt;
|pl||Polish&lt;br /&gt;
|-&lt;br /&gt;
|pt||Portuguese&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hans||Chinese (Simplified) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hant||Chinese (Traditional) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* It is advised to start from a copy of the main page source and insert your translation in place of the original content to achieve the same page layout.&lt;br /&gt;
&lt;br /&gt;
* Once your translation is finished, add your name, date, DONE the Suggested Pages to Translate.&lt;br /&gt;
&lt;br /&gt;
==Suggested Pages to Translate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LSL Portal ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal]]====&lt;br /&gt;
*Chinese - Done&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian - Done 2007-12-28 NickTheDeveloper Masatada&lt;br /&gt;
*Japanese - Started 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Editing_Primer]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French - &lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-28 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Done 2007-12-30 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal_Guidelines]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_To-do]]====&lt;br /&gt;
&lt;br /&gt;
=== Developer Resources ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Tutorial]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-29 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Done 2007-12-27 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:Category:LSL_Teachers]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Mentors]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Examples]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Library]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Protocol]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-29 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Done 2007-12-27 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Useful_Function_WishList]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-29 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Style_Guide]]====&lt;br /&gt;
*Chinese - Done 2007-12-29 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-25 Asuka Neely&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Efficiency]]====&lt;br /&gt;
*Chinese - Done 2007-12-22 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-25 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Memory]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-26 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Write_Once_Debug_Everywhere]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-26 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Alternate_Editors]]====&lt;br /&gt;
*Chinese - &lt;br /&gt;
*Dutch - &lt;br /&gt;
*French -&lt;br /&gt;
*German - &lt;br /&gt;
*Italian - &lt;br /&gt;
*Japanese - Done 2007-12-27 Asuka Neely &lt;br /&gt;
*Korean - &lt;br /&gt;
*Polish - &lt;br /&gt;
*Portuguese - &lt;br /&gt;
*Spanish - &lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Test_Harness]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Benchmarking_Scripts]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish -&lt;br /&gt;
&lt;br /&gt;
===  LSL Language Reference ===&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Constants]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Events]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Flow_Control]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Functions]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[For]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Olivier hildyard &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[If]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-03 Fana Dechou&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[While]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Forest Klaar&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-13 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Do-while]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-05 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Jump]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Return]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Operators]]====&lt;br /&gt;
This article is currently incomplete&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Types]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Integer]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Float]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Audrey Bisani&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[String]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Key]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[List]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Vector]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Ol Obscure&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Rotation]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Quaternion]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeiffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[LSL_Variables]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Errors]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Templates===&lt;br /&gt;
&lt;br /&gt;
====[[Template:LSL_Constants_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSLRotGetSet]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-05 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL Function]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Hans&amp;diff=46313</id>
		<title>LSL Style Guide/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Hans&amp;diff=46313"/>
		<updated>2007-12-29T06:27:53Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* 命名规范 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Style Guide}}{{LSL Header}}{{RightToc}}&lt;br /&gt;
&lt;br /&gt;
用LSL进行有效的编程,开发者需要在格式化和规范他们的脚本方面依照标准进行实践。&lt;br /&gt;
&lt;br /&gt;
这个设计指南由以下这些准则组成。尽管它们不像语言编译器的规则那样严格，但对编写易于维护的代码仍然非常关键。编程样式最重要的一个方面是你在编写代码过程中使用某种样式的时候，要始终如一。&lt;br /&gt;
&lt;br /&gt;
==通用准则==&lt;br /&gt;
&lt;br /&gt;
很多自己单独编程的人写出来的程序都丑陋得无法阅读，有待恰当地修改。它们一般都被写成这样：&lt;br /&gt;
&lt;br /&gt;
    default {state_entry(){llSay(0,&amp;quot;Hello World.&amp;quot;);}}&lt;br /&gt;
&lt;br /&gt;
然而，当有人写了一个上万字的程序，能被人理解（或者至少能“看懂”）是很重要的。要做到这一点，程序员可以使用的两个主要方法是使用花括号和缩进。&lt;br /&gt;
&lt;br /&gt;
方式一：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    default {&lt;br /&gt;
        state_entry() {&lt;br /&gt;
            llSay(0, &amp;quot;Hello World.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
方式二：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    default&lt;br /&gt;
    {&lt;br /&gt;
        state_entry()&lt;br /&gt;
        {&lt;br /&gt;
            llSay(0, &amp;quot;Hello World.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
方式一节省了空间，但方式二对初学者来说则更容易阅读。一但某个程序员在实践中使用了特定的样式，阅读那种样式的代码就会变得很容易。前后一致的缩进规则使得两种方式都更容易阅读。在方式一中缩进是标明层次范围的关键标示。&lt;br /&gt;
&lt;br /&gt;
==命名规范==&lt;br /&gt;
&lt;br /&gt;
在Second Life中，有许多命名规范，下面列出的是最常用的。&lt;br /&gt;
&lt;br /&gt;
全局变量（指在整个程序中都要用到的变量）应该以小写字母g开头。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    integer gSelected = 0;&lt;br /&gt;
    string  gMyName = &amp;quot;Please set one&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可变常量(Variable Constants)应全部大写。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    integer CHAT_CHAN = -517265;&lt;br /&gt;
    key OWNER_KEY = llGetOwner();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在用户自定义的函数或事件([[event]])中使用的变量应以下划线开头。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    listen( integer _channel, string _name, key _id, string _message )&lt;br /&gt;
    {&lt;br /&gt;
        if ( _channel == 1 || _id == llGetOwner() )&lt;br /&gt;
        	llOwnerSay(&amp;quot;Hello Avatar&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==让代码条理清晰==&lt;br /&gt;
&lt;br /&gt;
刚开始编程的时候，很多人会在一行代码里调用许多的函数。这使代码变得难以阅读，几乎无法调试除错。下面的例子就是这样的：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
default {&lt;br /&gt;
&lt;br /&gt;
   touch_start(integer n) {&lt;br /&gt;
       integer i = 0;&lt;br /&gt;
       integer index = llListFindList(lst, [llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1))]);&lt;br /&gt;
       if (!~llListFindList(lst, [llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1))]))&lt;br /&gt;
           lst += llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1));&lt;br /&gt;
       llOwnerSay(llList2CSV(lst));&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
再看下面这段代码，功能完全相同，却更简单易懂。比较起来，几乎没人能看懂上面的代码要实现什么目的，而下面的则很容易看懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    touch_start(integer n) {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        string name = llKey2Name(llDetectedKey(i));&lt;br /&gt;
        list nameAsList = llParseString2List(name, [&amp;quot; &amp;quot;], []);&lt;br /&gt;
        string firstName = llList2String(nameAsList, 0);&lt;br /&gt;
        string startPart = llToLower(llGetSubString(firstName, 0, numDigits - 1));&lt;br /&gt;
        integer index = llListFindList(lst, (list)startPart);&lt;br /&gt;
        if (!~index)&lt;br /&gt;
            lst += startPart;&lt;br /&gt;
        llOwnerSay(llList2CSV(lst));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LSL编译器在代码优化方面表现欠佳。因此，为了得到执行速度更快的代码，有必要在以上两种编程样式中找到平衡。在以多行合并方式对代码进行优化之前，必须确保代码没有漏洞并且执行正常。不恰当的优化会导致错误的结果，要始终对优化过的代码进行彻底测试。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    touch_start(integer n) {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        string startPart = llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1));&lt;br /&gt;
        if (!~llListFindList(lst, (list)startPart))&lt;br /&gt;
            lst += startPart;&lt;br /&gt;
        llOwnerSay(llList2CSV(lst));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==脚本结构==&lt;br /&gt;
LSL脚本由expressions, functions, statements, event handlers以及states构成。LSL编译器为脚本规定了一个明确的结构：&lt;br /&gt;
&lt;br /&gt;
#User Defined Variables  (参考 [[LSL_Variables]])&lt;br /&gt;
#User Defined Functions (参考 [[User-defined_functions]])&lt;br /&gt;
#[[default]] State  (参考 [[State]])&lt;br /&gt;
#User Defined States&lt;br /&gt;
&lt;br /&gt;
==编辑器==&lt;br /&gt;
&lt;br /&gt;
编辑LSL代码文件可以使用许多第三方开发的编辑器。&lt;br /&gt;
浏览 [[LSL Alternate Editors]] 可以获取详细信息。&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Han&amp;diff=46312</id>
		<title>LSL Style Guide/zh-Han</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Han&amp;diff=46312"/>
		<updated>2007-12-29T06:25:58Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Hans&amp;diff=46311</id>
		<title>LSL Style Guide/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Hans&amp;diff=46311"/>
		<updated>2007-12-29T06:23:56Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: New page: {{Multi-lang|LSL Style Guide}}{{LSL Header}}{{RightToc}}  用LSL进行有效的编程,开发者需要在格式化和规范他们的脚本方面依照标准进行实践。  这个设计指...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Style Guide}}{{LSL Header}}{{RightToc}}&lt;br /&gt;
&lt;br /&gt;
用LSL进行有效的编程,开发者需要在格式化和规范他们的脚本方面依照标准进行实践。&lt;br /&gt;
&lt;br /&gt;
这个设计指南由以下这些准则组成。尽管它们不像语言编译器的规则那样严格，但对编写易于维护的代码仍然非常关键。编程样式最重要的一个方面是你在编写代码过程中使用某种样式的时候，要始终如一。&lt;br /&gt;
&lt;br /&gt;
==通用准则==&lt;br /&gt;
&lt;br /&gt;
很多自己单独编程的人写出来的程序都丑陋得无法阅读，有待恰当地修改。它们一般都被写成这样：&lt;br /&gt;
&lt;br /&gt;
    default {state_entry(){llSay(0,&amp;quot;Hello World.&amp;quot;);}}&lt;br /&gt;
&lt;br /&gt;
然而，当有人写了一个上万字的程序，能被人理解（或者至少能“看懂”）是很重要的。要做到这一点，程序员可以使用的两个主要方法是使用花括号和缩进。&lt;br /&gt;
&lt;br /&gt;
方式一：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    default {&lt;br /&gt;
        state_entry() {&lt;br /&gt;
            llSay(0, &amp;quot;Hello World.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
方式二：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    default&lt;br /&gt;
    {&lt;br /&gt;
        state_entry()&lt;br /&gt;
        {&lt;br /&gt;
            llSay(0, &amp;quot;Hello World.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
方式一节省了空间，但方式二对初学者来说则更容易阅读。一但某个程序员在实践中使用了特定的样式，阅读那种样式的代码就会变得很容易。前后一致的缩进规则使得两种方式都更容易阅读。在方式一中缩进是标明层次范围的关键标示。&lt;br /&gt;
&lt;br /&gt;
==命名规范==&lt;br /&gt;
&lt;br /&gt;
在Second Life中，有许多命名规范，下面列出的是最常用的。&lt;br /&gt;
There are many naming conventions in Second Life. Only the most used ones will be listed below.&lt;br /&gt;
&lt;br /&gt;
全局变量（指在整个程序中都要用到的变量）应该以小写字母g开头。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    integer gSelected = 0;&lt;br /&gt;
    string  gMyName = &amp;quot;Please set one&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可变常量(Variable Constants)应全部大写。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    integer CHAT_CHAN = -517265;&lt;br /&gt;
    key OWNER_KEY = llGetOwner();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在用户自定义的函数或事件([[event]])中使用的变量应以下划线开头。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    listen( integer _channel, string _name, key _id, string _message )&lt;br /&gt;
    {&lt;br /&gt;
        if ( _channel == 1 || _id == llGetOwner() )&lt;br /&gt;
        	llOwnerSay(&amp;quot;Hello Avatar&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==让代码条理清晰==&lt;br /&gt;
&lt;br /&gt;
刚开始编程的时候，很多人会在一行代码里调用许多的函数。这使代码变得难以阅读，几乎无法调试除错。下面的例子就是这样的：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
default {&lt;br /&gt;
&lt;br /&gt;
   touch_start(integer n) {&lt;br /&gt;
       integer i = 0;&lt;br /&gt;
       integer index = llListFindList(lst, [llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1))]);&lt;br /&gt;
       if (!~llListFindList(lst, [llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1))]))&lt;br /&gt;
           lst += llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1));&lt;br /&gt;
       llOwnerSay(llList2CSV(lst));&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
再看下面这段代码，功能完全相同，却更简单易懂。比较起来，几乎没人能看懂上面的代码要实现什么目的，而下面的则很容易看懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    touch_start(integer n) {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        string name = llKey2Name(llDetectedKey(i));&lt;br /&gt;
        list nameAsList = llParseString2List(name, [&amp;quot; &amp;quot;], []);&lt;br /&gt;
        string firstName = llList2String(nameAsList, 0);&lt;br /&gt;
        string startPart = llToLower(llGetSubString(firstName, 0, numDigits - 1));&lt;br /&gt;
        integer index = llListFindList(lst, (list)startPart);&lt;br /&gt;
        if (!~index)&lt;br /&gt;
            lst += startPart;&lt;br /&gt;
        llOwnerSay(llList2CSV(lst));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LSL编译器在代码优化方面表现欠佳。因此，为了得到执行速度更快的代码，有必要在以上两种编程样式中找到平衡。在以多行合并方式对代码进行优化之前，必须确保代码没有漏洞并且执行正常。不恰当的优化会导致错误的结果，要始终对优化过的代码进行彻底测试。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    touch_start(integer n) {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        string startPart = llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1));&lt;br /&gt;
        if (!~llListFindList(lst, (list)startPart))&lt;br /&gt;
            lst += startPart;&lt;br /&gt;
        llOwnerSay(llList2CSV(lst));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==脚本结构==&lt;br /&gt;
LSL脚本由expressions, functions, statements, event handlers以及states构成。LSL编译器为脚本规定了一个明确的结构：&lt;br /&gt;
&lt;br /&gt;
#User Defined Variables  (参考 [[LSL_Variables]])&lt;br /&gt;
#User Defined Functions (参考 [[User-defined_functions]])&lt;br /&gt;
#[[default]] State  (参考 [[State]])&lt;br /&gt;
#User Defined States&lt;br /&gt;
&lt;br /&gt;
==编辑器==&lt;br /&gt;
&lt;br /&gt;
编辑LSL代码文件可以使用许多第三方开发的编辑器。&lt;br /&gt;
浏览 [[LSL Alternate Editors]] 可以获取详细信息。&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Han&amp;diff=46310</id>
		<title>LSL Style Guide/zh-Han</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Style_Guide/zh-Han&amp;diff=46310"/>
		<updated>2007-12-29T06:21:21Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: New page: {{Multi-lang|LSL Style Guide}}{{LSL Header}}{{RightToc}}  用LSL进行有效的编程,开发者需要在格式化和规范他们的脚本方面依照标准进行实践。  这个设计指...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Style Guide}}{{LSL Header}}{{RightToc}}&lt;br /&gt;
&lt;br /&gt;
用LSL进行有效的编程,开发者需要在格式化和规范他们的脚本方面依照标准进行实践。&lt;br /&gt;
&lt;br /&gt;
这个设计指南由以下这些准则组成。尽管它们不像语言编译器的规则那样严格，但对编写易于维护的代码仍然非常关键。编程样式最重要的一个方面是你在编写代码过程中使用某种样式的时候，要始终如一。&lt;br /&gt;
&lt;br /&gt;
==通用准则==&lt;br /&gt;
&lt;br /&gt;
很多自己单独编程的人写出来的程序都丑陋得无法阅读，有待恰当地修改。它们一般都被写成这样：&lt;br /&gt;
&lt;br /&gt;
    default {state_entry(){llSay(0,&amp;quot;Hello World.&amp;quot;);}}&lt;br /&gt;
&lt;br /&gt;
然而，当有人写了一个上万字的程序，能被人理解（或者至少能“看懂”）是很重要的。要做到这一点，程序员可以使用的两个主要方法是使用花括号和缩进。&lt;br /&gt;
&lt;br /&gt;
方式一：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    default {&lt;br /&gt;
        state_entry() {&lt;br /&gt;
            llSay(0, &amp;quot;Hello World.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
方式二：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    default&lt;br /&gt;
    {&lt;br /&gt;
        state_entry()&lt;br /&gt;
        {&lt;br /&gt;
            llSay(0, &amp;quot;Hello World.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
方式一节省了空间，但方式二对初学者来说则更容易阅读。一但某个程序员在实践中使用了特定的样式，阅读那种样式的代码就会变得很容易。前后一致的缩进规则使得两种方式都更容易阅读。在方式一中缩进是标明层次范围的关键标示。&lt;br /&gt;
&lt;br /&gt;
==命名规范==&lt;br /&gt;
&lt;br /&gt;
在Second Life中，有许多命名规范，下面列出的是最常用的。&lt;br /&gt;
There are many naming conventions in Second Life. Only the most used ones will be listed below.&lt;br /&gt;
&lt;br /&gt;
全局变量（指在整个程序中都要用到的变量）应该以小写字母g开头。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    integer gSelected = 0;&lt;br /&gt;
    string  gMyName = &amp;quot;Please set one&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可变常量(Variable Constants)应全部大写。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    integer CHAT_CHAN = -517265;&lt;br /&gt;
    key OWNER_KEY = llGetOwner();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在用户自定义的函数或事件([[event]])中使用的变量应以下划线开头。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    listen( integer _channel, string _name, key _id, string _message )&lt;br /&gt;
    {&lt;br /&gt;
        if ( _channel == 1 || _id == llGetOwner() )&lt;br /&gt;
        	llOwnerSay(&amp;quot;Hello Avatar&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==让代码条理清晰==&lt;br /&gt;
&lt;br /&gt;
刚开始编程的时候，很多人会在一行代码里调用许多的函数。这使代码变得难以阅读，几乎无法调试除错。下面的例子就是这样的：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
default {&lt;br /&gt;
&lt;br /&gt;
   touch_start(integer n) {&lt;br /&gt;
       integer i = 0;&lt;br /&gt;
       integer index = llListFindList(lst, [llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1))]);&lt;br /&gt;
       if (!~llListFindList(lst, [llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1))]))&lt;br /&gt;
           lst += llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1));&lt;br /&gt;
       llOwnerSay(llList2CSV(lst));&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
再看下面这段代码，功能完全相同，却更简单易懂。比较起来，几乎没人能看懂上面的代码要实现什么目的，而下面的则很容易看懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    touch_start(integer n) {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        string name = llKey2Name(llDetectedKey(i));&lt;br /&gt;
        list nameAsList = llParseString2List(name, [&amp;quot; &amp;quot;], []);&lt;br /&gt;
        string firstName = llList2String(nameAsList, 0);&lt;br /&gt;
        string startPart = llToLower(llGetSubString(firstName, 0, numDigits - 1));&lt;br /&gt;
        integer index = llListFindList(lst, (list)startPart);&lt;br /&gt;
        if (!~index)&lt;br /&gt;
            lst += startPart;&lt;br /&gt;
        llOwnerSay(llList2CSV(lst));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LSL编译器在代码优化方面表现欠佳。因此，为了得到执行速度更快的代码，有必要在以上两种编程样式中找到平衡。在以多行合并方式对代码进行优化之前，必须确保代码没有漏洞并且执行正常。不恰当的优化会导致错误的结果，要始终对优化过的代码进行彻底测试。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list lst;&lt;br /&gt;
integer numDigits = 10;&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    touch_start(integer n) {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        string startPart = llToLower(llGetSubString(llList2String(llParseString2List(llKey2Name(llDetectedKey(i)), [&amp;quot; &amp;quot;], []), 0), 0, numDigits - 1));&lt;br /&gt;
        if (!~llListFindList(lst, (list)startPart))&lt;br /&gt;
            lst += startPart;&lt;br /&gt;
        llOwnerSay(llList2CSV(lst));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==脚本结构==&lt;br /&gt;
LSL脚本由expressions, functions, statements, event handlers以及states构成。LSL编译器为脚本规定了一个明确的结构：&lt;br /&gt;
&lt;br /&gt;
#User Defined Variables  (参考 [[LSL_Variables]])&lt;br /&gt;
#User Defined Functions (参考 [[User-defined_functions]])&lt;br /&gt;
#[[default]] State  (参考 [[State]])&lt;br /&gt;
#User Defined States&lt;br /&gt;
&lt;br /&gt;
==编辑器==&lt;br /&gt;
&lt;br /&gt;
编辑LSL代码文件可以使用许多第三方开发的编辑器。&lt;br /&gt;
浏览 [[LSL Alternate Editors]] 可以获取详细信息。&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=46309</id>
		<title>LSL Portal Translation Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=46309"/>
		<updated>2007-12-29T06:19:20Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* :LSL_Style_Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
 Do NOT translate this page. This would result in out-of-sync versions of the master list&lt;br /&gt;
== Welcome to the LSL Portal Translation Project! ==&lt;br /&gt;
This is a community effort to provide a multi-lingual translation of the LSL Portal. Please feel free to edit and add languages to the set. Only reasonably static pages have been selected for translation. News, bugs and patches, automatically generated pages have been set aside. This way, we intend to keep the original pages and their translations as much similar as possible.&lt;br /&gt;
&lt;br /&gt;
LSL Scripters can participate in this project by choosing a wiki page from the list below and translating it into the language(s) they speak fluently. This suggestion list will be updated periodically with new pages. Contributors are welcomed to list themselves and discuss language-specific topics on the proper subpage of the [[LSL_Portal_Translation_Team]] page.&lt;br /&gt;
&lt;br /&gt;
== Procedure to Create a Translation Page ==&lt;br /&gt;
* Choose a page from the Suggested Pages to Translate. If the page is followed by the languages list, it is ready for translation.&lt;br /&gt;
&lt;br /&gt;
* If the page is not ready for translation the &amp;lt;nowiki&amp;gt;{{Multi-lang}}&amp;lt;/nowiki&amp;gt; tag should be included in the main page. If you are not are not familiar with this wiki, feel free to ask for assistance.&lt;br /&gt;
&lt;br /&gt;
* Click the link of the page you have chosen to translate. In the URL bar of your navigator, add a /xx language code. This is how you create the language subpage. Example: LSL_Tutorial/fr to create a french translation of LSL_Tutorial. &lt;br /&gt;
&lt;br /&gt;
====Language Codes====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Code!!Language&lt;br /&gt;
|-&lt;br /&gt;
|de||German&lt;br /&gt;
|-&lt;br /&gt;
|en||English&lt;br /&gt;
|-&lt;br /&gt;
|es||Spanish&lt;br /&gt;
|-&lt;br /&gt;
|fr||French&lt;br /&gt;
|-&lt;br /&gt;
|it||Italian&lt;br /&gt;
|-&lt;br /&gt;
|ko||Korean&lt;br /&gt;
|-&lt;br /&gt;
|ja||Japanese&lt;br /&gt;
|-&lt;br /&gt;
|nl||Dutch&lt;br /&gt;
|-&lt;br /&gt;
|pl||Polish&lt;br /&gt;
|-&lt;br /&gt;
|pt||Portuguese&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hans||Chinese (Simplified) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hant||Chinese (Traditional) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* It is advised to start from a copy of the main page source and insert your translation in place of the original content to achieve the same page layout.&lt;br /&gt;
&lt;br /&gt;
* Once your translation is finished, add your name, date, DONE the Suggested Pages to Translate.&lt;br /&gt;
&lt;br /&gt;
==Suggested Pages to Translate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LSL Portal ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian - Done 2007-12-28 NickTheDeveloper Masatada&lt;br /&gt;
*Japanese - Started 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Editing_Primer]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French - &lt;br /&gt;
* German -&lt;br /&gt;
* Italian - Done 2007-12-28 NickTheDeveloper Masatada&lt;br /&gt;
* Japanese - Started 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal_Guidelines]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_To-do]]====&lt;br /&gt;
&lt;br /&gt;
=== Developer Resources ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Tutorial]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-27 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:Category:LSL_Teachers]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Mentors]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Examples]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Library]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Protocol]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-27 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Useful_Function_WishList]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Style_Guide]]====&lt;br /&gt;
*Chinese - Done 2007-12-29 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-25 Asuka Neely&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Efficiency]]====&lt;br /&gt;
*Chinese - Done 2007-12-22 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-25 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Memory]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-26 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Write_Once_Debug_Everywhere]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-26 Asuka Neely &lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Alternate_Editors]]====&lt;br /&gt;
*Chinese - &lt;br /&gt;
*Dutch - &lt;br /&gt;
*French -&lt;br /&gt;
*German - &lt;br /&gt;
*Italian - &lt;br /&gt;
*Japanese - Done 2007-12-27 Asuka Neely &lt;br /&gt;
*Korean - &lt;br /&gt;
*Polish - &lt;br /&gt;
*Portuguese - &lt;br /&gt;
*Spanish - &lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Test_Harness]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish - &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Benchmarking_Scripts]]====&lt;br /&gt;
* Chinese -&lt;br /&gt;
* Dutch -&lt;br /&gt;
* French -&lt;br /&gt;
* German -&lt;br /&gt;
* Italian -&lt;br /&gt;
* Japanese - Done 2007-12-28 Asuka Neely&lt;br /&gt;
* Korean -&lt;br /&gt;
* Polish -&lt;br /&gt;
* Portuguese -&lt;br /&gt;
* Spanish -&lt;br /&gt;
&lt;br /&gt;
===  LSL Language Reference ===&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Constants]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Events]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Flow_Control]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Functions]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[For]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Olivier hildyard &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[If]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-03 Fana Dechou&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[While]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Forest Klaar&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-13 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Do-while]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-05 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Jump]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Return]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Operators]]====&lt;br /&gt;
This article is currently incomplete&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Types]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Integer]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Float]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Audrey Bisani&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[String]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Key]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[List]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Vector]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Ol Obscure&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Rotation]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Quaternion]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeiffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[LSL_Variables]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Errors]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Templates===&lt;br /&gt;
&lt;br /&gt;
====[[Template:LSL_Constants_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSLRotGetSet]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-05 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL Function]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=45541</id>
		<title>LSL Portal Translation Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=45541"/>
		<updated>2007-12-23T10:12:18Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* :LSL_Style_Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
 Do NOT translate this page. This would result in out-of-sync versions of the master list&lt;br /&gt;
== Welcome to the LSL Portal Translation Project! ==&lt;br /&gt;
This is a community effort to provide a multi-lingual translation of the LSL Portal. Please feel free to edit and add languages to the set. Only reasonably static pages have been selected for translation. News, bugs and patches, automatically generated pages have been set aside. This way, we intend to keep the original pages and their translations as much similar as possible.&lt;br /&gt;
&lt;br /&gt;
LSL Scripters can participate in this project by choosing a wiki page from the list below and translating it into the language(s) they speak fluently. This suggestion list will be updated periodically with new pages. Contributors are welcomed to list themselves and discuss language-specific topics on the proper subpage of the [[LSL_Portal_Translation_Team]] page.&lt;br /&gt;
&lt;br /&gt;
== Procedure to Create a Translation Page ==&lt;br /&gt;
* Choose a page from the Suggested Pages to Translate. If the page is followed by the languages list, it is ready for translation.&lt;br /&gt;
&lt;br /&gt;
* If the page is not ready for translation the &amp;lt;nowiki&amp;gt;{{Multi-lang}}&amp;lt;/nowiki&amp;gt; tag should be included in the main page. If you are not are not familiar with this wiki, feel free to ask for assistance.&lt;br /&gt;
&lt;br /&gt;
* Click the link of the page you have chosen to translate. In the URL bar of your navigator, add a /xx language code. This is how you create the language subpage. Example: LSL_Tutorial/fr to create a french translation of LSL_Tutorial. &lt;br /&gt;
&lt;br /&gt;
====Language Codes====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Code!!Language&lt;br /&gt;
|-&lt;br /&gt;
|de||German&lt;br /&gt;
|-&lt;br /&gt;
|en||English&lt;br /&gt;
|-&lt;br /&gt;
|es||Spanish&lt;br /&gt;
|-&lt;br /&gt;
|fr||French&lt;br /&gt;
|-&lt;br /&gt;
|it||Italian&lt;br /&gt;
|-&lt;br /&gt;
|ko||Korean&lt;br /&gt;
|-&lt;br /&gt;
|ja||Japanese&lt;br /&gt;
|-&lt;br /&gt;
|nl||Dutch&lt;br /&gt;
|-&lt;br /&gt;
|pl||Polish&lt;br /&gt;
|-&lt;br /&gt;
|pt||Portuguese&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hans||Chinese (Simplified) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hant||Chinese (Traditional) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* It is advised to start from a copy of the main page source and insert your translation in place of the original content to achieve the same page layout.&lt;br /&gt;
&lt;br /&gt;
* Once your translation is finished, add your name, date, DONE the Suggested Pages to Translate.&lt;br /&gt;
&lt;br /&gt;
==Suggested Pages to Translate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LSL Portal ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Started 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Editing_Primer]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_Guidelines]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_To-do]]====&lt;br /&gt;
&lt;br /&gt;
=== Developer Resources ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Tutorial]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Teachers]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Mentors]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Examples]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Library]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Protocol]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Useful_Function_WishList]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Style_Guide]]====&lt;br /&gt;
*Chinese - Started 2007-12-22 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Efficiency]]====&lt;br /&gt;
*Chinese - Done 2007-12-22 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Memory]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Write_Once_Debug_Everywhere]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Alternate_Editors]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Test_Harness]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Benchmarking_Scripts]]====&lt;br /&gt;
&lt;br /&gt;
===  LSL Language Reference ===&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Constants]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Events]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Flow_Control]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Functions]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[For]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Olivier hildyard &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[If]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-03 Fana Dechou&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[While]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Forest Klaar&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-13 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Do-while]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-05 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Jump]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Return]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Operators]]====&lt;br /&gt;
This article is currently incomplete&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Types]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Integer]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Float]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Audrey Bisani&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[String]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Key]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[List]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Vector]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Ol Obscure&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Rotation]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Quaternion]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeiffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[LSL_Variables]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Errors]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Templates===&lt;br /&gt;
&lt;br /&gt;
====[[Template:LSL_Constants_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSLRotGetSet]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-05 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL Function]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=45499</id>
		<title>LSL Portal Translation Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=45499"/>
		<updated>2007-12-22T09:17:24Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* :LSL_Script_Efficiency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
 Do NOT translate this page. This would result in out-of-sync versions of the master list&lt;br /&gt;
== Welcome to the LSL Portal Translation Project! ==&lt;br /&gt;
This is a community effort to provide a multi-lingual translation of the LSL Portal. Please feel free to edit and add languages to the set. Only reasonably static pages have been selected for translation. News, bugs and patches, automatically generated pages have been set aside. This way, we intend to keep the original pages and their translations as much similar as possible.&lt;br /&gt;
&lt;br /&gt;
LSL Scripters can participate in this project by choosing a wiki page from the list below and translating it into the language(s) they speak fluently. This suggestion list will be updated periodically with new pages. Contributors are welcomed to list themselves and discuss language-specific topics on the proper subpage of the [[LSL_Portal_Translation_Team]] page.&lt;br /&gt;
&lt;br /&gt;
== Procedure to Create a Translation Page ==&lt;br /&gt;
* Choose a page from the Suggested Pages to Translate. If the page is followed by the languages list, it is ready for translation.&lt;br /&gt;
&lt;br /&gt;
* If the page is not ready for translation the &amp;lt;nowiki&amp;gt;{{Multi-lang}}&amp;lt;/nowiki&amp;gt; tag should be included in the main page. If you are not are not familiar with this wiki, feel free to ask for assistance.&lt;br /&gt;
&lt;br /&gt;
* Click the link of the page you have chosen to translate. In the URL bar of your navigator, add a /xx language code. This is how you create the language subpage. Example: LSL_Tutorial/fr to create a french translation of LSL_Tutorial. &lt;br /&gt;
&lt;br /&gt;
====Language Codes====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Code!!Language&lt;br /&gt;
|-&lt;br /&gt;
|de||German&lt;br /&gt;
|-&lt;br /&gt;
|en||English&lt;br /&gt;
|-&lt;br /&gt;
|es||Spanish&lt;br /&gt;
|-&lt;br /&gt;
|fr||French&lt;br /&gt;
|-&lt;br /&gt;
|it||Italian&lt;br /&gt;
|-&lt;br /&gt;
|ko||Korean&lt;br /&gt;
|-&lt;br /&gt;
|ja||Japanese&lt;br /&gt;
|-&lt;br /&gt;
|nl||Dutch&lt;br /&gt;
|-&lt;br /&gt;
|pl||Polish&lt;br /&gt;
|-&lt;br /&gt;
|pt||Portuguese&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hans||Chinese (Simplified) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hant||Chinese (Traditional) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* It is advised to start from a copy of the main page source and insert your translation in place of the original content to achieve the same page layout.&lt;br /&gt;
&lt;br /&gt;
* Once your translation is finished, add your name, date, DONE the Suggested Pages to Translate.&lt;br /&gt;
&lt;br /&gt;
==Suggested Pages to Translate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LSL Portal ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Started 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Editing_Primer]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_Guidelines]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_To-do]]====&lt;br /&gt;
&lt;br /&gt;
=== Developer Resources ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Tutorial]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Teachers]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Mentors]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Examples]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Library]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Protocol]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Useful_Function_WishList]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Style_Guide]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Script_Efficiency]]====&lt;br /&gt;
*Chinese - Done 2007-12-22 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Memory]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Write_Once_Debug_Everywhere]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Alternate_Editors]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Test_Harness]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Benchmarking_Scripts]]====&lt;br /&gt;
&lt;br /&gt;
===  LSL Language Reference ===&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Constants]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Events]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Flow_Control]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Functions]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[For]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Olivier hildyard &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[If]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-03 Fana Dechou&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[While]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Forest Klaar&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-13 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Do-while]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-05 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Jump]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Return]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Operators]]====&lt;br /&gt;
This article is currently incomplete&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Types]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Integer]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Float]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Audrey Bisani&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[String]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Key]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[List]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Vector]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Ol Obscure&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Rotation]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Quaternion]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeiffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[LSL_Variables]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Errors]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Templates===&lt;br /&gt;
&lt;br /&gt;
====[[Template:LSL_Constants_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSLRotGetSet]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-05 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL Function]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45498</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45498"/>
		<updated>2007-12-22T09:07:29Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Script Efficiency}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL脚本的执行效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
效率是指一段特定的脚本要实现某个目标需要占用资源的多少。它一般是指脚本执行的速度，但不限于此。&lt;br /&gt;
以下是几点需要注意的事项，大体上按重要性排序：&lt;br /&gt;
&lt;br /&gt;
* 为实现某种效果而使用大量的脚本。详见“设计高效率的脚本”&lt;br /&gt;
* [[llSleep]] - 当脚本休眠时，这个函数每帧大概要多消耗0.2到0.3毫秒，使用timers会更好。&lt;br /&gt;
* 频繁使用timers(&amp;lt;5秒)&lt;br /&gt;
* Listen - 特别是对0号频道的监听。&lt;br /&gt;
* 频繁地改变纹理(别人不得不下载它们)&lt;br /&gt;
* 不恰当地用server/physical rotations代替omega&lt;br /&gt;
* 非必要的事件处理函数(touch, collision, ...)&lt;br /&gt;
* 大量的email或IM&lt;br /&gt;
* 低效的脚本(如linear search)&lt;br /&gt;
* 使用较大的循环(轮询法)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 设计高效率的脚本 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个对象中的每个无用脚本都耗费每帧0.001到0.003的脚本时间，所以脚本越少越好。&lt;br /&gt;
&lt;br /&gt;
* 如果你需要使用一组“按钮”，不要在每个prim中加入脚本，而是在主脚本中用[[llDetectedLinkNumber]]来侦测到底是哪个按钮被触发了。  &lt;br /&gt;
* 如果你需要改变子prims的color、alpha或texture，不要在每个prim中加入脚本，而是使用[[llSetLinkAlpha]]，[[llSetLinkColor]]，[[llSetLinkTexture]]，或[[llSetLinkPrimitiveParams]]。&lt;br /&gt;
* &#039;&#039;&#039;永远不要&#039;&#039;&#039;在每个prim(特别是对于包含在较大的linkset中的)中加入脚本来监听0号频道(或任何其它的频道)。对于效率而言这也许是最糟糕的事情，不幸的是这是经常发生的。&lt;br /&gt;
* 应考虑[[XyzzyText]]来代替[[XyText]]。&lt;br /&gt;
&lt;br /&gt;
最起码的，如果你发现有必要在每个prim中加入脚本，也要停下来想想是否有其它的方法用更少的脚本完成它。总会有变通的方法，这种变通在你的程序中是否可行完全取决于你。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 微机-优化 ==&lt;br /&gt;
&lt;br /&gt;
有众多方法可以让脚本的执行速度更快，比如用++a代替a++，然而，这种优化在将来未必仍然有用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 代码到底运行得有多快 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
下面的代码会取得调用每个函数的时间，请到[[Talk:LSL_Script_Efficiency|discussion]]提出修改意见。由于任何微小的改动都会影响测量的精准，请不要在经过讨论之前修改这里的代码。请确保这些代码与它的注释都与[[Efficiency Tester]]页面保持一致。&lt;br /&gt;
&lt;br /&gt;
感谢{{User|Xaviar Czervik}}提供原始代码，感谢{{User|Strife Onizuka}}调整了这些代码使它更加准确，也要感谢列在本文history中的所有贡献者。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; &lt;br /&gt;
&lt;br /&gt;
milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
下面的数据是使用上面的代码在一个刚部署的(所以不是私有的)sim上取得的, 这个代码单独运行在一个HUD附件上。测试进行了20次并取了平均值。&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
&lt;br /&gt;
因此a++的执行时间比++a长40%(粗略估计)。&lt;br /&gt;
&lt;br /&gt;
下面的数据同样是正确的，只是它没有用上面的函数，它用的是一个由{{User|Xaviar Czervik}}稍作优化的版本。可能的话请大家用上面的函数重复测试。&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
这是用相同的函数在for循环中所做的测试：&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (监听0号频道):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
不同频道 (全部使用[[llSay]]()):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
文本长度 ([[llSay]]() 全部使用1号频道):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 字节:    1.242300 millis&lt;br /&gt;
   10 字节:  1.309700 millis&lt;br /&gt;
   100 字节: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45497</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45497"/>
		<updated>2007-12-22T09:03:55Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Script Efficiency}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL脚本的执行效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
效率是指一段特定的脚本要实现某个目标需要占用资源的多少。它一般是指脚本执行的速度，但不限于此&lt;br /&gt;
&lt;br /&gt;
。&lt;br /&gt;
以下是几点需要注意的事项，大体上按重要性排序：&lt;br /&gt;
&lt;br /&gt;
* 为实现某种效果而使用大量的脚本。详见“设计高效率的脚本”&lt;br /&gt;
* [[llSleep]] - 当脚本休眠时，这个函数每帧大概要多消耗0.2到0.3毫秒，使用timers会更好。&lt;br /&gt;
* 频繁使用timers(&amp;lt;5秒)&lt;br /&gt;
* Listen - 特别是对0号频道的监听。&lt;br /&gt;
* 频繁地改变纹理(别人不得不下载它们)&lt;br /&gt;
* 不恰当地用server/physical rotations代替omega&lt;br /&gt;
* 非必要的事件处理函数(touch, collision, ...)&lt;br /&gt;
* 大量的email或IM&lt;br /&gt;
* 低效的脚本(如linear search)&lt;br /&gt;
* 使用较大的循环(轮询法)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 设计高效率的脚本 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个对象中的每个无用脚本都耗费每帧0.001到0.003的脚本时间，所以脚本越少越好。&lt;br /&gt;
* 如果你需要使用一组“按钮”，不要在每个prim中加入脚本，而是在主脚本中用&lt;br /&gt;
&lt;br /&gt;
[[llDetectedLinkNumber]]来侦测到底是哪个按钮被触发了。  &lt;br /&gt;
* 如果你需要改变子prims的color、alpha或texture，不要在每个prim中加入脚本，而是使用&lt;br /&gt;
&lt;br /&gt;
[[llSetLinkAlpha]]，[[llSetLinkColor]]，[[llSetLinkTexture]]，或[[llSetLinkPrimitiveParams]]&lt;br /&gt;
&lt;br /&gt;
。&lt;br /&gt;
* &#039;&#039;&#039;永远不要&#039;&#039;&#039;在每个prim(特别是对于包含在较大的linkset中的)中加入脚本来监听0号频道(或任何&lt;br /&gt;
&lt;br /&gt;
其它的频道)。对于效率而言这也许是最糟糕的事情，不幸的是这是经常发生的。&lt;br /&gt;
* 应考虑[[XyzzyText]]来代替[[XyText]]。&lt;br /&gt;
&lt;br /&gt;
最起码的，如果你发现有必要在每个prim中加入脚本，也要停下来想想是否有其它的方法用更少的脚本完&lt;br /&gt;
&lt;br /&gt;
成它。总会有变通的方法，这种变通在你的程序中是否可行完全取决于你。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 微机-优化 ==&lt;br /&gt;
&lt;br /&gt;
有众多方法可以让脚本的执行速度更快，比如用++a代替a++，然而，这种优化在将来未必仍然有用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 代码到底运行得有多快 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
下面的代码会取得调用每个函数的时间&lt;br /&gt;
&lt;br /&gt;
请到[[Talk:LSL_Script_Efficiency|discussion]]提出修改意见。由于任何微小的改动都会影响测量的&lt;br /&gt;
&lt;br /&gt;
精准，请不要在经过讨论之前修改这里的代码。请确保这些代码与它的注释都与[[Efficiency Tester]]&lt;br /&gt;
&lt;br /&gt;
页面保持一致。&lt;br /&gt;
&lt;br /&gt;
感谢{{User|Xaviar Czervik}}提供原始代码，感谢{{User|Strife Onizuka}}调整了这些代码使它更加准&lt;br /&gt;
&lt;br /&gt;
确，也要感谢列在本文history中的所有贡献者。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; &lt;br /&gt;
&lt;br /&gt;
milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
下面的数据是使用上面的代码在一个刚部署的(所以不是私有的)sim上取得的, 这个代码单独运行在一个&lt;br /&gt;
&lt;br /&gt;
HUD附件上。测试进行了20次并取了平均值。&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
&lt;br /&gt;
因此a++的执行时间比++a长40%(粗略估计)。&lt;br /&gt;
&lt;br /&gt;
下面的数据同样是正确的，只是它没有用上面的函数，它用的是一个由{{User|Xaviar Czervik}}稍作优&lt;br /&gt;
&lt;br /&gt;
化的版本。可能的话请大家用上面的函数重复测试。&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
这是用相同的函数在for循环中所做的测试：&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (监听0号频道):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
不同频道 (全部使用[[llSay]]()):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
文本长度 ([[llSay]]() 全部使用1号频道):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 Character:    1.242300 millis&lt;br /&gt;
   10 Characters:  1.309700 millis&lt;br /&gt;
   100 Characters: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45492</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45492"/>
		<updated>2007-12-22T04:44:11Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* LSL脚本的执行效率 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Script Efficiency}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL脚本的执行效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
效率是指一段特定的脚本要实现某个目标需要占用资源的多少。它一般是指脚本执行的速度，但不限于此。&lt;br /&gt;
以下是几点需要注意的事项，大体上按重要性排序：&lt;br /&gt;
&lt;br /&gt;
* 为实现某种效果而使用大量的脚本。详见“设计高效率的脚本”&lt;br /&gt;
* [[llSleep]] - 当脚本休眠时，这个函数每帧大概要多消耗0.2到0.3毫秒，使用timers会更好。&lt;br /&gt;
* 频繁使用timers(&amp;lt;5秒)&lt;br /&gt;
* Listen - 特别是对0号频道的监听。&lt;br /&gt;
* 频繁地改变纹理(别人不得不下载它们)&lt;br /&gt;
* 不恰当地用server/physical rotations代替omega&lt;br /&gt;
* 非必要的事件处理函数(touch, collision, ...)&lt;br /&gt;
* 大量的email或IM&lt;br /&gt;
* 低效的脚本(如linear search)&lt;br /&gt;
* 使用较大的循环(轮询法)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 设计高效率的脚本 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个物体中的每个无用脚本都增加每帧0.001到0.003的脚本时间耗费。脚本越少越好。&lt;br /&gt;
* If you need to have a bunch of &amp;quot;buttons&amp;quot;, don&#039;t put a script in each prim.  Use [[llDetectedLinkNumber]] to detect which button was touched from your main script instead.  &lt;br /&gt;
* If you need to change color, alpha, or texture of child prims, do not put a script in each prim.  Instead use [[llSetLinkAlpha]], [[llSetLinkColor]], [[llSetLinkTexture]], or [[llSetLinkPrimitiveParams]].&lt;br /&gt;
* &#039;&#039;&#039;Never&#039;&#039;&#039; put a script in each prim (of a large linkset) that listens on channel 0 (or any other channel).  This is probably the worst thing you can do for efficiency.  Unfortunately it is all too common.&lt;br /&gt;
* Consider using [[XyzzyText]] instead of [[XyText]].&lt;br /&gt;
&lt;br /&gt;
The bottom line is, if you find yourself tempted to put a script in each prim, stop and think about how you could do it differently with less scripts.  There is almost always an alternative.  It is up to you to decide whether the alternative is a viable one for your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Micro-optimization ==&lt;br /&gt;
&lt;br /&gt;
There are many ways to speed up scripts, such as using ++a instead of a++, however, most of these micro optimizations might not hold true in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How Fast Does That Code Run ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code will get the time for each function call in millis.&lt;br /&gt;
&lt;br /&gt;
Please first propose changes to the [[Talk:LSL_Script_Efficiency|discussion]] tab. Please do not change the code here without discussion, as any small change could reduce the accuracy of measurements. Please note this code and its comments should exactly match the code and comments presented by the [[Efficiency Tester]] page.&lt;br /&gt;
&lt;br /&gt;
Thanks to {{User|Xaviar Czervik}} for the original code, thanks to {{User|Strife Onizuka}} for tuning the code to produce more accurate measurements, and thanks to the other contributors listed in the history of this article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data was collected using the above function in a recently deployed empty (though not private) sim, with only that one script running in a HUD attachment. 20 tests of each were run and averaged.&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
Thus a++ takes 40% longer to execute than ++a (rough estimate).&lt;br /&gt;
&lt;br /&gt;
While the following data is correct, the function above was not used. A slightly less optimized version written by {{User|Xaviar Czervik}} was used. If someone could please repeat the tests with the function above.&lt;br /&gt;
&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
Testing the same function in for loops:&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (Channel 0 where applies):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
Different Channels ([[llSay]]() Used for all):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
Amount of text ([[llSay]]() and Channel 1 used for all):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 Character:    1.242300 millis&lt;br /&gt;
   10 Characters:  1.309700 millis&lt;br /&gt;
   100 Characters: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45491</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45491"/>
		<updated>2007-12-22T04:36:57Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* LSL代码的执行效率 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Script Efficiency}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL脚本的执行效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
效率是指一段特定的脚本要实现某个目标需要占用资源的多少。它一般是指脚本执行的速度，但不限于此。&lt;br /&gt;
以下是几点需要注意的事项，大体上按重要性排序：&lt;br /&gt;
&lt;br /&gt;
* 为实现某种效果而使用大量的脚本。详见“设计高效率的脚本”&lt;br /&gt;
* [[llSleep]] - 当脚本休眠时，这个函数每帧大概要多消耗0.2到0.3毫秒，使用timers会更好。&lt;br /&gt;
* 频繁使用timers(&amp;lt;5秒)&lt;br /&gt;
* Listen - 特别是对0号频道的监听。&lt;br /&gt;
* 频繁地改变材质(别人不得不下载它们)&lt;br /&gt;
* 不恰当地用server/physical rotations代替omega&lt;br /&gt;
* 非必要的事件处理函数(touch, collision, ...)&lt;br /&gt;
* 大量的email或IM&lt;br /&gt;
* 低效的脚本(如linear search)&lt;br /&gt;
* 使用较大的循环(轮询法)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 设计高效率的脚本 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个物体中的每个无用脚本都增加每帧0.001到0.003的脚本时间耗费。脚本越少越好。&lt;br /&gt;
* If you need to have a bunch of &amp;quot;buttons&amp;quot;, don&#039;t put a script in each prim.  Use [[llDetectedLinkNumber]] to detect which button was touched from your main script instead.  &lt;br /&gt;
* If you need to change color, alpha, or texture of child prims, do not put a script in each prim.  Instead use [[llSetLinkAlpha]], [[llSetLinkColor]], [[llSetLinkTexture]], or [[llSetLinkPrimitiveParams]].&lt;br /&gt;
* &#039;&#039;&#039;Never&#039;&#039;&#039; put a script in each prim (of a large linkset) that listens on channel 0 (or any other channel).  This is probably the worst thing you can do for efficiency.  Unfortunately it is all too common.&lt;br /&gt;
* Consider using [[XyzzyText]] instead of [[XyText]].&lt;br /&gt;
&lt;br /&gt;
The bottom line is, if you find yourself tempted to put a script in each prim, stop and think about how you could do it differently with less scripts.  There is almost always an alternative.  It is up to you to decide whether the alternative is a viable one for your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Micro-optimization ==&lt;br /&gt;
&lt;br /&gt;
There are many ways to speed up scripts, such as using ++a instead of a++, however, most of these micro optimizations might not hold true in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How Fast Does That Code Run ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code will get the time for each function call in millis.&lt;br /&gt;
&lt;br /&gt;
Please first propose changes to the [[Talk:LSL_Script_Efficiency|discussion]] tab. Please do not change the code here without discussion, as any small change could reduce the accuracy of measurements. Please note this code and its comments should exactly match the code and comments presented by the [[Efficiency Tester]] page.&lt;br /&gt;
&lt;br /&gt;
Thanks to {{User|Xaviar Czervik}} for the original code, thanks to {{User|Strife Onizuka}} for tuning the code to produce more accurate measurements, and thanks to the other contributors listed in the history of this article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data was collected using the above function in a recently deployed empty (though not private) sim, with only that one script running in a HUD attachment. 20 tests of each were run and averaged.&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
Thus a++ takes 40% longer to execute than ++a (rough estimate).&lt;br /&gt;
&lt;br /&gt;
While the following data is correct, the function above was not used. A slightly less optimized version written by {{User|Xaviar Czervik}} was used. If someone could please repeat the tests with the function above.&lt;br /&gt;
&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
Testing the same function in for loops:&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (Channel 0 where applies):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
Different Channels ([[llSay]]() Used for all):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
Amount of text ([[llSay]]() and Channel 1 used for all):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 Character:    1.242300 millis&lt;br /&gt;
   10 Characters:  1.309700 millis&lt;br /&gt;
   100 Characters: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45490</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45490"/>
		<updated>2007-12-22T04:34:22Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* Efficient Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Script Efficiency}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL代码的执行效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
效率是指一段特定的代码要实现某个目标需要占用资源的多少。它一般是指代码执行的速度，但不限于此。&lt;br /&gt;
以下是几点需要注意的事项，大体上按重要性排序：&lt;br /&gt;
&lt;br /&gt;
* 为实现某种效果而使用大量的代码。详见“设计高效率的代码”&lt;br /&gt;
* [[llSleep]] - 当代码休眠时，这个函数每帧大概要多消耗0.2到0.3毫秒，使用timers会更好。&lt;br /&gt;
* 频繁使用timers(&amp;lt;5秒)&lt;br /&gt;
* Listen - 特别是对0号频道的监听。&lt;br /&gt;
* 频繁地改变材质(别人不得不下载它们)&lt;br /&gt;
* 不恰当地用server/physical rotations代替omega&lt;br /&gt;
* 非必要的事件处理函数(touch, collision, ...)&lt;br /&gt;
* 大量的email或IM&lt;br /&gt;
* 低效的代码(如linear search)&lt;br /&gt;
* 使用较大的循环(轮询法)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 设计高效率的脚本 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个物体中的每个无用脚本都增加每帧0.001到0.003的脚本时间耗费。脚本越少越好。&lt;br /&gt;
* If you need to have a bunch of &amp;quot;buttons&amp;quot;, don&#039;t put a script in each prim.  Use [[llDetectedLinkNumber]] to detect which button was touched from your main script instead.  &lt;br /&gt;
* If you need to change color, alpha, or texture of child prims, do not put a script in each prim.  Instead use [[llSetLinkAlpha]], [[llSetLinkColor]], [[llSetLinkTexture]], or [[llSetLinkPrimitiveParams]].&lt;br /&gt;
* &#039;&#039;&#039;Never&#039;&#039;&#039; put a script in each prim (of a large linkset) that listens on channel 0 (or any other channel).  This is probably the worst thing you can do for efficiency.  Unfortunately it is all too common.&lt;br /&gt;
* Consider using [[XyzzyText]] instead of [[XyText]].&lt;br /&gt;
&lt;br /&gt;
The bottom line is, if you find yourself tempted to put a script in each prim, stop and think about how you could do it differently with less scripts.  There is almost always an alternative.  It is up to you to decide whether the alternative is a viable one for your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Micro-optimization ==&lt;br /&gt;
&lt;br /&gt;
There are many ways to speed up scripts, such as using ++a instead of a++, however, most of these micro optimizations might not hold true in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How Fast Does That Code Run ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code will get the time for each function call in millis.&lt;br /&gt;
&lt;br /&gt;
Please first propose changes to the [[Talk:LSL_Script_Efficiency|discussion]] tab. Please do not change the code here without discussion, as any small change could reduce the accuracy of measurements. Please note this code and its comments should exactly match the code and comments presented by the [[Efficiency Tester]] page.&lt;br /&gt;
&lt;br /&gt;
Thanks to {{User|Xaviar Czervik}} for the original code, thanks to {{User|Strife Onizuka}} for tuning the code to produce more accurate measurements, and thanks to the other contributors listed in the history of this article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data was collected using the above function in a recently deployed empty (though not private) sim, with only that one script running in a HUD attachment. 20 tests of each were run and averaged.&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
Thus a++ takes 40% longer to execute than ++a (rough estimate).&lt;br /&gt;
&lt;br /&gt;
While the following data is correct, the function above was not used. A slightly less optimized version written by {{User|Xaviar Czervik}} was used. If someone could please repeat the tests with the function above.&lt;br /&gt;
&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
Testing the same function in for loops:&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (Channel 0 where applies):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
Different Channels ([[llSay]]() Used for all):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
Amount of text ([[llSay]]() and Channel 1 used for all):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 Character:    1.242300 millis&lt;br /&gt;
   10 Characters:  1.309700 millis&lt;br /&gt;
   100 Characters: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45488</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45488"/>
		<updated>2007-12-22T04:16:15Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* LSL代码的执行效率 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Script Efficiency}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL代码的执行效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
效率是指一段特定的代码要实现某个目标需要占用资源的多少。它一般是指代码执行的速度，但不限于此。&lt;br /&gt;
以下是几点需要注意的事项，大体上按重要性排序：&lt;br /&gt;
&lt;br /&gt;
* 为实现某种效果而使用大量的代码。详见“设计高效率的代码”&lt;br /&gt;
* [[llSleep]] - 当代码休眠时，这个函数每帧大概要多消耗0.2到0.3毫秒，使用timers会更好。&lt;br /&gt;
* 频繁使用timers(&amp;lt;5秒)&lt;br /&gt;
* Listen - 特别是对0号频道的监听。&lt;br /&gt;
* 频繁地改变材质(别人不得不下载它们)&lt;br /&gt;
* 不恰当地用server/physical rotations代替omega&lt;br /&gt;
* 非必要的事件处理函数(touch, collision, ...)&lt;br /&gt;
* 大量的email或IM&lt;br /&gt;
* 低效的代码(如linear search)&lt;br /&gt;
* 使用较大的循环(轮询法)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficient Design ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each idle script in an object adds 0.001 to 0.003 milliseconds per frame of script time usage.  Less scripts is better.&lt;br /&gt;
&lt;br /&gt;
* If you need to have a bunch of &amp;quot;buttons&amp;quot;, don&#039;t put a script in each prim.  Use [[llDetectedLinkNumber]] to detect which button was touched from your main script instead.  &lt;br /&gt;
* If you need to change color, alpha, or texture of child prims, do not put a script in each prim.  Instead use [[llSetLinkAlpha]], [[llSetLinkColor]], [[llSetLinkTexture]], or [[llSetLinkPrimitiveParams]].&lt;br /&gt;
* &#039;&#039;&#039;Never&#039;&#039;&#039; put a script in each prim (of a large linkset) that listens on channel 0 (or any other channel).  This is probably the worst thing you can do for efficiency.  Unfortunately it is all too common.&lt;br /&gt;
* Consider using [[XyzzyText]] instead of [[XyText]].&lt;br /&gt;
&lt;br /&gt;
The bottom line is, if you find yourself tempted to put a script in each prim, stop and think about how you could do it differently with less scripts.  There is almost always an alternative.  It is up to you to decide whether the alternative is a viable one for your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Micro-optimization ==&lt;br /&gt;
&lt;br /&gt;
There are many ways to speed up scripts, such as using ++a instead of a++, however, most of these micro optimizations might not hold true in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How Fast Does That Code Run ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code will get the time for each function call in millis.&lt;br /&gt;
&lt;br /&gt;
Please first propose changes to the [[Talk:LSL_Script_Efficiency|discussion]] tab. Please do not change the code here without discussion, as any small change could reduce the accuracy of measurements. Please note this code and its comments should exactly match the code and comments presented by the [[Efficiency Tester]] page.&lt;br /&gt;
&lt;br /&gt;
Thanks to {{User|Xaviar Czervik}} for the original code, thanks to {{User|Strife Onizuka}} for tuning the code to produce more accurate measurements, and thanks to the other contributors listed in the history of this article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data was collected using the above function in a recently deployed empty (though not private) sim, with only that one script running in a HUD attachment. 20 tests of each were run and averaged.&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
Thus a++ takes 40% longer to execute than ++a (rough estimate).&lt;br /&gt;
&lt;br /&gt;
While the following data is correct, the function above was not used. A slightly less optimized version written by {{User|Xaviar Czervik}} was used. If someone could please repeat the tests with the function above.&lt;br /&gt;
&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
Testing the same function in for loops:&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (Channel 0 where applies):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
Different Channels ([[llSay]]() Used for all):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
Amount of text ([[llSay]]() and Channel 1 used for all):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 Character:    1.242300 millis&lt;br /&gt;
   10 Characters:  1.309700 millis&lt;br /&gt;
   100 Characters: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=45487</id>
		<title>LSL Portal Translation Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=45487"/>
		<updated>2007-12-22T03:38:00Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* :LSL_Script_Efficiency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
 Do NOT translate this page. This would result in out-of-sync versions of the master list&lt;br /&gt;
== Welcome to the LSL Portal Translation Project! ==&lt;br /&gt;
This is a community effort to provide a multi-lingual translation of the LSL Portal. Please feel free to edit and add languages to the set. Only reasonably static pages have been selected for translation. News, bugs and patches, automatically generated pages have been set aside. This way, we intend to keep the original pages and their translations as much similar as possible.&lt;br /&gt;
&lt;br /&gt;
LSL Scripters can participate in this project by choosing a wiki page from the list below and translating it into the language(s) they speak fluently. This suggestion list will be updated periodically with new pages. Contributors are welcomed to list themselves and discuss language-specific topics on the proper subpage of the [[LSL_Portal_Translation_Team]] page.&lt;br /&gt;
&lt;br /&gt;
== Procedure to Create a Translation Page ==&lt;br /&gt;
* Choose a page from the Suggested Pages to Translate. If the page is followed by the languages list, it is ready for translation.&lt;br /&gt;
&lt;br /&gt;
* If the page is not ready for translation the &amp;lt;nowiki&amp;gt;{{Multi-lang}}&amp;lt;/nowiki&amp;gt; tag should be included in the main page. If you are not are not familiar with this wiki, feel free to ask for assistance.&lt;br /&gt;
&lt;br /&gt;
* Click the link of the page you have chosen to translate. In the URL bar of your navigator, add a /xx language code. This is how you create the language subpage. Example: LSL_Tutorial/fr to create a french translation of LSL_Tutorial. &lt;br /&gt;
&lt;br /&gt;
====Language Codes====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Code!!Language&lt;br /&gt;
|-&lt;br /&gt;
|de||German&lt;br /&gt;
|-&lt;br /&gt;
|en||English&lt;br /&gt;
|-&lt;br /&gt;
|es||Spanish&lt;br /&gt;
|-&lt;br /&gt;
|fr||French&lt;br /&gt;
|-&lt;br /&gt;
|it||Italian&lt;br /&gt;
|-&lt;br /&gt;
|ko||Korean&lt;br /&gt;
|-&lt;br /&gt;
|ja||Japanese&lt;br /&gt;
|-&lt;br /&gt;
|nl||Dutch&lt;br /&gt;
|-&lt;br /&gt;
|pl||Polish&lt;br /&gt;
|-&lt;br /&gt;
|pt||Portuguese&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hans||Chinese (Simplified) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hant||Chinese (Traditional) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* It is advised to start from a copy of the main page source and insert your translation in place of the original content to achieve the same page layout.&lt;br /&gt;
&lt;br /&gt;
* Once your translation is finished, add your name, date, DONE the Suggested Pages to Translate.&lt;br /&gt;
&lt;br /&gt;
==Suggested Pages to Translate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LSL Portal ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Started 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Editing_Primer]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_Guidelines]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_To-do]]====&lt;br /&gt;
&lt;br /&gt;
=== Developer Resources ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Tutorial]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Teachers]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Mentors]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Examples]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Library]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Protocol]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Useful_Function_WishList]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Style_Guide]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Script_Efficiency]]====&lt;br /&gt;
*Chinese - Started 2007-12-22 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Memory]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Write_Once_Debug_Everywhere]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Alternate_Editors]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Test_Harness]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Benchmarking_Scripts]]====&lt;br /&gt;
&lt;br /&gt;
===  LSL Language Reference ===&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Constants]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Events]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Flow_Control]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Functions]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[For]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Olivier hildyard &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[If]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-03 Fana Dechou&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[While]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Forest Klaar&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-13 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Do-while]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-05 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Jump]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Return]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Operators]]====&lt;br /&gt;
This article is currently incomplete&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Types]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Integer]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Float]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Audrey Bisani&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[String]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Key]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[List]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Vector]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Ol Obscure&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Rotation]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Quaternion]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeiffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[LSL_Variables]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Errors]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Templates===&lt;br /&gt;
&lt;br /&gt;
====[[Template:LSL_Constants_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSLRotGetSet]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-05 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL Function]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45486</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45486"/>
		<updated>2007-12-22T03:25:58Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang|LSL Script Efficiency}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL代码的执行效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Efficiency is how much resource a particular script uses to accomplish a goal.  This often goes hand-in-hand with speed of execution, but not always.&lt;br /&gt;
&lt;br /&gt;
Things to watch out for, in rough order of importance:&lt;br /&gt;
&lt;br /&gt;
* Using a lot of scripts to accomplish something.  See Efficient Design.&lt;br /&gt;
* [[llSleep]] - This function uses up 0.2 to 0.3 ms per frame while the script sleeps, timers are much better.&lt;br /&gt;
* Short frequency timers (&amp;lt;5 sec)&lt;br /&gt;
* Listen - especially to the 0 channel&lt;br /&gt;
* Changing textures often (Others have to download them)&lt;br /&gt;
* Inappropriate use of server/physical rotations instead of omega&lt;br /&gt;
* Event handlers which are not needed (touch, collision, ...)&lt;br /&gt;
* Large amount of email or IM&lt;br /&gt;
* Inefficient algorithms (like linear search)&lt;br /&gt;
* Busy (polling) loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficient Design ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each idle script in an object adds 0.001 to 0.003 milliseconds per frame of script time usage.  Less scripts is better.&lt;br /&gt;
&lt;br /&gt;
* If you need to have a bunch of &amp;quot;buttons&amp;quot;, don&#039;t put a script in each prim.  Use [[llDetectedLinkNumber]] to detect which button was touched from your main script instead.  &lt;br /&gt;
* If you need to change color, alpha, or texture of child prims, do not put a script in each prim.  Instead use [[llSetLinkAlpha]], [[llSetLinkColor]], [[llSetLinkTexture]], or [[llSetLinkPrimitiveParams]].&lt;br /&gt;
* &#039;&#039;&#039;Never&#039;&#039;&#039; put a script in each prim (of a large linkset) that listens on channel 0 (or any other channel).  This is probably the worst thing you can do for efficiency.  Unfortunately it is all too common.&lt;br /&gt;
* Consider using [[XyzzyText]] instead of [[XyText]].&lt;br /&gt;
&lt;br /&gt;
The bottom line is, if you find yourself tempted to put a script in each prim, stop and think about how you could do it differently with less scripts.  There is almost always an alternative.  It is up to you to decide whether the alternative is a viable one for your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Micro-optimization ==&lt;br /&gt;
&lt;br /&gt;
There are many ways to speed up scripts, such as using ++a instead of a++, however, most of these micro optimizations might not hold true in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How Fast Does That Code Run ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code will get the time for each function call in millis.&lt;br /&gt;
&lt;br /&gt;
Please first propose changes to the [[Talk:LSL_Script_Efficiency|discussion]] tab. Please do not change the code here without discussion, as any small change could reduce the accuracy of measurements. Please note this code and its comments should exactly match the code and comments presented by the [[Efficiency Tester]] page.&lt;br /&gt;
&lt;br /&gt;
Thanks to {{User|Xaviar Czervik}} for the original code, thanks to {{User|Strife Onizuka}} for tuning the code to produce more accurate measurements, and thanks to the other contributors listed in the history of this article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data was collected using the above function in a recently deployed empty (though not private) sim, with only that one script running in a HUD attachment. 20 tests of each were run and averaged.&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
Thus a++ takes 40% longer to execute than ++a (rough estimate).&lt;br /&gt;
&lt;br /&gt;
While the following data is correct, the function above was not used. A slightly less optimized version written by {{User|Xaviar Czervik}} was used. If someone could please repeat the tests with the function above.&lt;br /&gt;
&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
Testing the same function in for loops:&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (Channel 0 where applies):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
Different Channels ([[llSay]]() Used for all):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
Amount of text ([[llSay]]() and Channel 1 used for all):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 Character:    1.242300 millis&lt;br /&gt;
   10 Characters:  1.309700 millis&lt;br /&gt;
   100 Characters: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=45485</id>
		<title>LSL Portal Translation Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Portal_Translation_Project&amp;diff=45485"/>
		<updated>2007-12-22T02:47:04Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* :LSL_Script_Efficiency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
 Do NOT translate this page. This would result in out-of-sync versions of the master list&lt;br /&gt;
== Welcome to the LSL Portal Translation Project! ==&lt;br /&gt;
This is a community effort to provide a multi-lingual translation of the LSL Portal. Please feel free to edit and add languages to the set. Only reasonably static pages have been selected for translation. News, bugs and patches, automatically generated pages have been set aside. This way, we intend to keep the original pages and their translations as much similar as possible.&lt;br /&gt;
&lt;br /&gt;
LSL Scripters can participate in this project by choosing a wiki page from the list below and translating it into the language(s) they speak fluently. This suggestion list will be updated periodically with new pages. Contributors are welcomed to list themselves and discuss language-specific topics on the proper subpage of the [[LSL_Portal_Translation_Team]] page.&lt;br /&gt;
&lt;br /&gt;
== Procedure to Create a Translation Page ==&lt;br /&gt;
* Choose a page from the Suggested Pages to Translate. If the page is followed by the languages list, it is ready for translation.&lt;br /&gt;
&lt;br /&gt;
* If the page is not ready for translation the &amp;lt;nowiki&amp;gt;{{Multi-lang}}&amp;lt;/nowiki&amp;gt; tag should be included in the main page. If you are not are not familiar with this wiki, feel free to ask for assistance.&lt;br /&gt;
&lt;br /&gt;
* Click the link of the page you have chosen to translate. In the URL bar of your navigator, add a /xx language code. This is how you create the language subpage. Example: LSL_Tutorial/fr to create a french translation of LSL_Tutorial. &lt;br /&gt;
&lt;br /&gt;
====Language Codes====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!Code!!Language&lt;br /&gt;
|-&lt;br /&gt;
|de||German&lt;br /&gt;
|-&lt;br /&gt;
|en||English&lt;br /&gt;
|-&lt;br /&gt;
|es||Spanish&lt;br /&gt;
|-&lt;br /&gt;
|fr||French&lt;br /&gt;
|-&lt;br /&gt;
|it||Italian&lt;br /&gt;
|-&lt;br /&gt;
|ko||Korean&lt;br /&gt;
|-&lt;br /&gt;
|ja||Japanese&lt;br /&gt;
|-&lt;br /&gt;
|nl||Dutch&lt;br /&gt;
|-&lt;br /&gt;
|pl||Polish&lt;br /&gt;
|-&lt;br /&gt;
|pt||Portuguese&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hans||Chinese (Simplified) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|zh-Hant||Chinese (Traditional) &amp;lt;!-- Refers to the script/characters, see [[Template_talk:Multi-lang#Chinese]] --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* It is advised to start from a copy of the main page source and insert your translation in place of the original content to achieve the same page layout.&lt;br /&gt;
&lt;br /&gt;
* Once your translation is finished, add your name, date, DONE the Suggested Pages to Translate.&lt;br /&gt;
&lt;br /&gt;
==Suggested Pages to Translate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== LSL Portal ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Portal]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Started 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Editing_Primer]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_Guidelines]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Portal_To-do]]====&lt;br /&gt;
&lt;br /&gt;
=== Developer Resources ===&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Tutorial]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Teachers]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Mentors]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Examples]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Library]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Protocol]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Useful_Function_WishList]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Style_Guide]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Script_Efficiency]]====&lt;br /&gt;
*Chinese -　Started 2007-12-22 Fuser Aeon &lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Script_Memory]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Write_Once_Debug_Everywhere]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Jeff Kelley&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[:LSL_Alternate_Editors]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Test_Harness]]====&lt;br /&gt;
----&lt;br /&gt;
====[[:LSL_Benchmarking_Scripts]]====&lt;br /&gt;
&lt;br /&gt;
===  LSL Language Reference ===&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Constants]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Events]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Flow_Control]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[:Category:LSL_Functions]]====&lt;br /&gt;
This is a :Category; page and doesn&#039;t need translation&lt;br /&gt;
---- &lt;br /&gt;
====[[For]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Olivier hildyard &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[If]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-03 Fana Dechou&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[While]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Forest Klaar&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-13 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Do-while]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Started 2007-12-05 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[Jump]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Return]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Operators]]====&lt;br /&gt;
This article is currently incomplete&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[State]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French -&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[:Category:LSL_Types]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Integer]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Float]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Audrey Bisani&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-04 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[String]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Key]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-02 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[List]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Vector]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Ol Obscure&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Rotation]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Quaternion]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-03 Catherine Pfeiffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[LSL_Variables]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese - Done 2007-12-05 Coffee Mills&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====[[LSL_Errors]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - started 2007-12-11 Samia Bechir&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Templates===&lt;br /&gt;
&lt;br /&gt;
====[[Template:LSL_Constants_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL_Conditional]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-04 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSLRotGetSet]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - Done 2007-12-05 Catherine Pfeffer&lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;br /&gt;
====[[Template:LSL Function]]====&lt;br /&gt;
*Chinese -&lt;br /&gt;
*Dutch -&lt;br /&gt;
*French - &lt;br /&gt;
*German -&lt;br /&gt;
*Italian -&lt;br /&gt;
*Japanese -&lt;br /&gt;
*Korean -&lt;br /&gt;
*Polish -&lt;br /&gt;
*Portuguese -&lt;br /&gt;
*Spanish -&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45484</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45484"/>
		<updated>2007-12-22T02:40:22Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: /* LSL 代码的执行效率 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Multi-lang}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
== LSL代码的执行效率 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Efficiency is how much resource a particular script uses to accomplish a goal.  This often goes hand-in-hand with speed of execution, but not always.&lt;br /&gt;
&lt;br /&gt;
Things to watch out for, in rough order of importance:&lt;br /&gt;
&lt;br /&gt;
* Using a lot of scripts to accomplish something.  See Efficient Design.&lt;br /&gt;
* [[llSleep]] - This function uses up 0.2 to 0.3 ms per frame while the script sleeps, timers are much better.&lt;br /&gt;
* Short frequency timers (&amp;lt;5 sec)&lt;br /&gt;
* Listen - especially to the 0 channel&lt;br /&gt;
* Changing textures often (Others have to download them)&lt;br /&gt;
* Inappropriate use of server/physical rotations instead of omega&lt;br /&gt;
* Event handlers which are not needed (touch, collision, ...)&lt;br /&gt;
* Large amount of email or IM&lt;br /&gt;
* Inefficient algorithms (like linear search)&lt;br /&gt;
* Busy (polling) loops&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficient Design ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each idle script in an object adds 0.001 to 0.003 milliseconds per frame of script time usage.  Less scripts is better.&lt;br /&gt;
&lt;br /&gt;
* If you need to have a bunch of &amp;quot;buttons&amp;quot;, don&#039;t put a script in each prim.  Use [[llDetectedLinkNumber]] to detect which button was touched from your main script instead.  &lt;br /&gt;
* If you need to change color, alpha, or texture of child prims, do not put a script in each prim.  Instead use [[llSetLinkAlpha]], [[llSetLinkColor]], [[llSetLinkTexture]], or [[llSetLinkPrimitiveParams]].&lt;br /&gt;
* &#039;&#039;&#039;Never&#039;&#039;&#039; put a script in each prim (of a large linkset) that listens on channel 0 (or any other channel).  This is probably the worst thing you can do for efficiency.  Unfortunately it is all too common.&lt;br /&gt;
* Consider using [[XyzzyText]] instead of [[XyText]].&lt;br /&gt;
&lt;br /&gt;
The bottom line is, if you find yourself tempted to put a script in each prim, stop and think about how you could do it differently with less scripts.  There is almost always an alternative.  It is up to you to decide whether the alternative is a viable one for your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Micro-optimization ==&lt;br /&gt;
&lt;br /&gt;
There are many ways to speed up scripts, such as using ++a instead of a++, however, most of these micro optimizations might not hold true in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How Fast Does That Code Run ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code will get the time for each function call in millis.&lt;br /&gt;
&lt;br /&gt;
Please first propose changes to the [[Talk:LSL_Script_Efficiency|discussion]] tab. Please do not change the code here without discussion, as any small change could reduce the accuracy of measurements. Please note this code and its comments should exactly match the code and comments presented by the [[Efficiency Tester]] page.&lt;br /&gt;
&lt;br /&gt;
Thanks to {{User|Xaviar Czervik}} for the original code, thanks to {{User|Strife Onizuka}} for tuning the code to produce more accurate measurements, and thanks to the other contributors listed in the history of this article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//IMPORTANT: Only perform tests in an empty region.&lt;br /&gt;
// To reduce contamination and be sure to wearing no attachments.&lt;br /&gt;
// Preferably do tests in a private sim with one on it.&lt;br /&gt;
// Don&#039;t move while performing the test.&lt;br /&gt;
// There is a margin of error so run the tests multiple times to determine it.&lt;br /&gt;
&lt;br /&gt;
integer time() { // count milliseconds since the day began&lt;br /&gt;
    string stamp = llGetTimestamp(); // &amp;quot;YYYY-MM-DDThh:mm:ss.ff..fZ&amp;quot;&lt;br /&gt;
    return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh&lt;br /&gt;
           (integer) llGetSubString(stamp, 14, 15) * 60000 +  // mm&lt;br /&gt;
           llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
  state_entry() {&lt;br /&gt;
    llOwnerSay((string) llGetFreeMemory());&lt;br /&gt;
&lt;br /&gt;
    //test variables&lt;br /&gt;
    float counter;&lt;br /&gt;
&lt;br /&gt;
    //framework variables&lt;br /&gt;
    float i = 0;&lt;br /&gt;
    float j = 0;&lt;br /&gt;
    float max = 10000; // 2ms of work takes 20 seconds to repeat 10,000 times, plus overhead&lt;br /&gt;
&lt;br /&gt;
    float t0 = time();&lt;br /&gt;
    do {&lt;br /&gt;
&lt;br /&gt;
      //test&lt;br /&gt;
      counter += 1;&lt;br /&gt;
      &lt;br /&gt;
    }while (++i &amp;lt; max);&lt;br /&gt;
    float t1 = time();&lt;br /&gt;
    do ; while (++j &amp;lt; max);&lt;br /&gt;
    float t2 = time();//remove the time required by the framework&lt;br /&gt;
    float elapsed = ((t1 - t0) - (t2 - t1))/max;&lt;br /&gt;
    llOwnerSay(&amp;quot;The function in the loop took a total of &amp;quot; + (string)elapsed + &amp;quot; milliseconds.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data was collected using the above function in a recently deployed empty (though not private) sim, with only that one script running in a HUD attachment. 20 tests of each were run and averaged.&lt;br /&gt;
   ++a:     0.173780 ms    std. dev.:  0.003393 ms&lt;br /&gt;
   a += 1:  0.181720 ms    std. dev.:  0.013267 ms&lt;br /&gt;
   a++:     0.243500 ms    std. dev.:  0.013816 ms&lt;br /&gt;
Thus a++ takes 40% longer to execute than ++a (rough estimate).&lt;br /&gt;
&lt;br /&gt;
While the following data is correct, the function above was not used. A slightly less optimized version written by {{User|Xaviar Czervik}} was used. If someone could please repeat the tests with the function above.&lt;br /&gt;
&lt;br /&gt;
   ++a:     0.364700 millis&lt;br /&gt;
   a += 1:  0.346900 millis&lt;br /&gt;
   a++:     0.413700 millis&lt;br /&gt;
&lt;br /&gt;
Testing the same function in for loops:&lt;br /&gt;
   ++a:     0.358370 millis&lt;br /&gt;
   a += 1:  0.351200 millis&lt;br /&gt;
   a++:     0.424600 millis&lt;br /&gt;
&lt;br /&gt;
[[llOwnerSay]] v. [[llSay]] v. [[llShout]] v. [[llWhisper]] (Channel 0 where applies):&lt;br /&gt;
   llOwnerSay(): 4.359000 millis&lt;br /&gt;
   llWhisper():  5.201000 millis&lt;br /&gt;
   llSay():      5.226000 millis&lt;br /&gt;
   llShout():   14.877000 millis&lt;br /&gt;
&lt;br /&gt;
Different Channels ([[llSay]]() Used for all):&lt;br /&gt;
   -100000000: 1.226400 millis&lt;br /&gt;
   -100000:    1.254300 millis&lt;br /&gt;
   -100:       1.296100 millis&lt;br /&gt;
   -1:         1.292400 millis&lt;br /&gt;
   0:          5.226000 millis&lt;br /&gt;
   1:          1.242300 millis&lt;br /&gt;
   100:        1.249100 millis&lt;br /&gt;
   100000:     1.219700 millis&lt;br /&gt;
   100000000:  1.228700 millis&lt;br /&gt;
&lt;br /&gt;
Amount of text ([[llSay]]() and Channel 1 used for all):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   1 Character:    1.242300 millis&lt;br /&gt;
   10 Characters:  1.309700 millis&lt;br /&gt;
   100 Characters: 1.965600 millis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45483</id>
		<title>LSL Script Efficiency/zh-Hans</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Script_Efficiency/zh-Hans&amp;diff=45483"/>
		<updated>2007-12-22T02:36:30Z</updated>

		<summary type="html">&lt;p&gt;Fuser Aeon: New page:  == LSL 代码的执行效率 ==&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== LSL 代码的执行效率 ==&lt;/div&gt;</summary>
		<author><name>Fuser Aeon</name></author>
	</entry>
</feed>