Difference between revisions of "LSL Script Memory/es"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(7 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Multi-lang}}{{LSL Header}}{{RightToc}}
{{Multi-lang}}{{LSL Header{{#var:lang}}}}{{RightToc}}


=Memoria de Script=
=Memoria de Script=
Todos los scripts en LSL comienzan con 16 kilobytes de memoria y esa memoria se usa rápidamente.  Abajo esta una lista de código y uso de memoria.  
Todos los scripts en LSL comienzan con 16 kilobytes de memoria y esa memoria se usa rápidamente.  Abajo está una lista de código y uso de memoria.  


Todos los datos a continuación fueron compilados usando [[llGetFreeMemory]](). Como el compilador de LSL no es un programa simple, los datos abajo pueden no ser 100% correctos.  De hecho, parte de el es incorrecto y necesita correciones.  
Todos los datos a continuación fueron compilados usando [[llGetFreeMemory]](). Como el compilador de LSL no es un programa simple, los datos abajo pueden no ser 100% correctos.  De hecho, parte de los datos son incorrectos y necesitan correciones.  


There are still many bits that can be improved upon, and many more that can be taken into more detail. If anyone has any free time and doesn't know what to do, play around with the memory usage for different functions. A list of needed updates can be seen at the end of the page.
Todavía quedan partes que pueden mejorarse y muchas más que necesitan detalles adicionales. Si alguien tiene tiempo y no sabe que hacer, juege con el uso de memoria para diferentes funciones. Una lista de actualizaciones necesarias se encuentra al final de la página.


=Variables=
=Variables=
Line 39: Line 39:
vector  31
vector  31
rotation 39
rotation 39
list    15 + list memory usage
list    15 + lista de uso de memoria
</pre>
</pre>
===Lista de Uso de Memoria===
===Lista de Uso de Memoria===
<pre>
<pre>
Line 75: Line 76:
</pre>
</pre>
==Constantes==
==Constantes==
Todas las contantes de numero entero usan 6 bytes de memoria.
Todas las contantes de número entero usan 6 bytes de memoria.
===Otras Constantes===
===Otras Constantes===
<pre>
<pre>
Line 82: Line 83:
NULL_KEY      39
NULL_KEY      39
</pre>
</pre>
==Extras==
==Extras==
6 bytes para variables de referencia
6 bytes para variables de referencia
Line 130: Line 132:


==Llamando funciones==
==Llamando funciones==
21 bytes to call a function with no return<br>
21 bytes para llamar a una función sin retorno<br>
21 bytes to call a function with any return + type of return<br>
21 bytes para llamar a una función con cualquier retorno + tipo de retorno <br>
Subtract number of parameters entered
Reste el número de parámetros ingresados
===Tipos de Retorno===
===Tipos de Retorno===
integer  2
integer  2
Line 141: Line 143:
rotation 2
rotation 2
list    18 + lista de uso de memoria
list    18 + lista de uso de memoria
==Ejemplos==
==Ejemplos==
<pre>
<pre>
Line 159: Line 162:
}
}
</pre>
</pre>
=Operators=
=Operadores=
==List of Operators==  
==Lista de Operadores==  
<pre>
<pre>
+  1
+  1
Line 181: Line 184:
!= 1
!= 1
</pre>
</pre>
==Assignment==
==Asignación==
Assigning values to variables takes as many bytes as used minus one.
Asignar valores a variables toma muchos bytes menos uno.
===Examples===
===Ejemplos===
<pre>
<pre>
string s; //12 bytes
string s; //12 bytes
s;        //6 bytes
s;        //6 bytes
"";      //3 bytes (see below)
"";      //3 bytes (vea a continuación)
s = "";  //8 (6 (string) + 3 (null string) - 1) bytes
s = "";  //8 (6 (string) + 3 (null string) - 1) bytes
</pre>
</pre>
However...
Pero...
<pre>
<pre>
string s = ""; //12 bytes
string s = ""; //12 bytes
Line 198: Line 201:
i = i + 1 // 6 bytes (integer) + 6 bytes (integer) + 6 bytes (1) + 1 byte (addition) - 1 byte (assignment)
i = i + 1 // 6 bytes (integer) + 6 bytes (integer) + 6 bytes (1) + 1 byte (addition) - 1 byte (assignment)
</pre>
</pre>
==Statements==
 
==Declaraciones==
<pre>
<pre>
if    6
if    6
Line 208: Line 212:
state 5
state 5
</pre>
</pre>
===Examples===
===Ejemplos===
<pre>
<pre>
if (5 < 10) { // 6 (if) + 6 (integer) + 6 (integer) + 1 (compare)
if (5 < 10) { // 6 (if) + 6 (integer) + 6 (integer) + 1 (compare)
//Do something here
//Haz algo aquí
}
}
</pre>
</pre>
<pre>
<pre>
while (1 < 2 & 3 < 4) { // 11 (while) + 4*6 (4 integers) + 2 (2 compares)
while (1 < 2 & 3 < 4) { // 11 (while) + 4*6 (4 integers) + 2 (2 compares)
//Do something here
//Haz algo aquí
}
}
</pre>
</pre>
==Typecasting==
==Moldeado de Tipos (Typecasting)==
<pre>
<pre>
integer  10
integer  10
Line 230: Line 234:
</pre>
</pre>
==Estados==
==Estados==
14 bytes for any event in a state + 1 for each parameter
14 bytes por cualquier evento en un estado + 1 por cada parámetro
17 bytes to create a new state
17 bytes para crear un estado nuevo
=Needed Updates=
 
Several updates are needed for this page, the most needed are listed below:
=Actualizaciones Necesarias=
* Verification of all data
Se necesitan varias actualizaciones para esta página.  Las más urgentes se encuentran a continuación:  
* Clarification of explanations
* Verificar todos los datos
* Investigations into how the functions work
* Aclaración de explicaciones
** Calling of functions
* Investigar como trabajan las funciones
** How return types effect the return
** Llamar funciones
* In the following code, the call to llGetFreeMemory() returns a different value. How is it affected? Why?
** Como los tipos de retorno afectan los valores devueltos
* En el código a continuación, la llamada llGetFreeMemory() regresa un valor diferente. ¿Cómo se afecta? ¿Por qué?
<pre>
<pre>
default {
default {

Latest revision as of 16:32, 24 October 2008

Memoria de Script

Todos los scripts en LSL comienzan con 16 kilobytes de memoria y esa memoria se usa rápidamente. Abajo está una lista de código y uso de memoria.

Todos los datos a continuación fueron compilados usando llGetFreeMemory(). Como el compilador de LSL no es un programa simple, los datos abajo pueden no ser 100% correctos. De hecho, parte de los datos son incorrectos y necesitan correciones.

Todavía quedan partes que pueden mejorarse y muchas más que necesitan detalles adicionales. Si alguien tiene tiempo y no sabe que hacer, juege con el uso de memoria para diferentes funciones. Una lista de actualizaciones necesarias se encuentra al final de la página.

Variables

Declarando variables como globales

Uso de Memoria de Variables

integer  10
float    10
string   18 + 1 por carácter
key      18 + 1 por carácter
vector   18
rotation 22
list     21 + lista de uso de memoria

Lista de Uso de Memoria

integer  15
float    15
string   12 + 1 por carácter
key      12 + 1 por carácter
vector   23
rotation 27
list     Las Listas no pueden contener otras listas

Declarando variables dentro del estado predeterminado

Uso de Memoria de Variables

integer  15
float    15
string   12 + 1 por carácter
key      12 + 1 por carácter
vector   31
rotation 39
list     15 + lista de uso de memoria

Lista de Uso de Memoria

integer  7
float    7
string   4 + 1 por carácter
key      4 + 1 por carácter
vector   23
rotation 30
list     Las Listas no pueden contener otras listas

Simplemente declarando valores

Colocando un Valor en la Pila (Stack)

Integers 1 + 4 bytes para el valor
Float    1 + 4 bytes para el valor
String   1 + bytes por carácter + 1 byte para nulo
Key      1 + bytes por carácter + 1 byte para nulo
Vector   1 + 3 * float cost
Rotation 1 + 4 * float cost
List     1 + 4 para la longitud de la lista + uso de lista de memoria

Remover un valor de una pila cuesta 1 byte.

Lista de Uso de Memoria

Integers 7
Float    7
String   4 + 1 por carácter
Key      4 + 1 por carácter
Vector   23
Rotation 30
list     Las listas no pueden contener listas

Constantes

Todas las contantes de número entero usan 6 bytes de memoria.

Otras Constantes

ZERO_VECTOR   16
ZERO_ROTATION 21
NULL_KEY      39

Extras

6 bytes para variables de referencia

Ejemplos

integer i; //10 bytes

default {
 state_entry() {
  list l = ["Testing", "This"] //15 (list) + 15 (string) + 8 (string)
 }
}

Funciones

Declarando funciones

Las funciones requieren 16 bytes para crearse con 3 bytes por parámetro, además del tipo de retorno.

Tipos de retorno

integer  4
float    4
string   4
key      4
vector   20
rotation 27
list     4

Declarando variables en funciones

Uso de Memoria de Variables

integer  11
float    11
string   8 + 1 por carácter
key      8 + 1 por carácter
vector   19
rotation 23
list     11 + lista de uso de memoria

Lista de Uso de Memoria

integer  7
float    7
string   4 + 1 por carácter
key      4 + 1 por carácter
vector   23
rotation 30
list     Las listas no pueden contener listas

Llamando funciones

21 bytes para llamar a una función sin retorno
21 bytes para llamar a una función con cualquier retorno + tipo de retorno
Reste el número de parámetros ingresados

Tipos de Retorno

integer 2 float 2 string 10 + 1 por carácter devuelto key 10 + 1 por carácter devuelto vector 2 rotation 2 list 18 + lista de uso de memoria

Ejemplos

list f() {  //16 (function) + 4 (return)
    list ret = [0]; //11 (list) + 7 (integer)
    return ret; 6 (list)
}  
string f() {
    return "";
}

default {
    state_entry() {
        f();   //21 (call to f) + 10 (returns string)
    }
}

Operadores

Lista de Operadores

+  1
-  1
*  1
/  1
%  1
&  0
|  0
^  0
!  0
>> 0
<< 0
~  1
== 1
<= 1
<  1
>= 1
>  1
!= 1

Asignación

Asignar valores a variables toma muchos bytes menos uno.

Ejemplos

string s; //12 bytes
s;        //6 bytes
"";       //3 bytes (vea a continuación)
s = "";   //8 (6 (string) + 3 (null string) - 1) bytes

Pero...

string s = ""; //12 bytes
integer i; //15 bytes
i = i + 1 // 6 bytes (integer) + 6 bytes (integer) + 6 bytes (1) + 1 byte (addition) - 1 byte (assignment)

Declaraciones

if    6
while 11
for   11
do    6
jump  5
@     0
state 5

Ejemplos

if (5 < 10) { // 6 (if) + 6 (integer) + 6 (integer) + 1 (compare)
//Haz algo aquí
}
while (1 < 2 & 3 < 4) { // 11 (while) + 4*6 (4 integers) + 2 (2 compares)
//Haz algo aquí
}

Moldeado de Tipos (Typecasting)

integer  10
float    10
string   10
key      10
vector   10
rotation 10
list     25

Estados

14 bytes por cualquier evento en un estado + 1 por cada parámetro 17 bytes para crear un estado nuevo

Actualizaciones Necesarias

Se necesitan varias actualizaciones para esta página. Las más urgentes se encuentran a continuación:

  • Verificar todos los datos
  • Aclaración de explicaciones
  • Investigar como trabajan las funciones
    • Llamar funciones
    • Como los tipos de retorno afectan los valores devueltos
  • En el código a continuación, la llamada llGetFreeMemory() regresa un valor diferente. ¿Cómo se afecta? ¿Por qué?
default {
     state_entry() {
          llOwnerSay((string)llGetFreeMemory());
          list l = ["", "", "", ""];
          llOwnerSay((string)llGetFreeMemory());
     }
}