Difference between revisions of "LSL Script Memory/es"
(New page: {{Multi-lang}}{{LSL Header}}{{RightToc}} =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ó...) |
m |
||
(8 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 | 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 | 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= | =Variables= | ||
Line 39: | Line 39: | ||
vector 31 | vector 31 | ||
rotation 39 | rotation 39 | ||
list 15 + | 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 | 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 118: | Line 120: | ||
list 11 + lista de uso de memoria | list 11 + lista de uso de memoria | ||
</pre> | </pre> | ||
=== | ===Lista de Uso de Memoria=== | ||
<pre> | <pre> | ||
integer 7 | integer 7 | ||
Line 128: | Line 130: | ||
list Las listas no pueden contener listas | list Las listas no pueden contener listas | ||
</pre> | </pre> | ||
==Llamando funciones== | ==Llamando funciones== | ||
21 bytes | 21 bytes para llamar a una función sin retorno<br> | ||
21 bytes | 21 bytes para llamar a una función con cualquier retorno + tipo de retorno <br> | ||
Reste el número de parámetros ingresados | |||
===Tipos de Retorno=== | ===Tipos de Retorno=== | ||
integer 2 | integer 2 | ||
Line 140: | 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 158: | Line 162: | ||
} | } | ||
</pre> | </pre> | ||
= | =Operadores= | ||
== | ==Lista de Operadores== | ||
<pre> | <pre> | ||
+ 1 | + 1 | ||
Line 180: | Line 184: | ||
!= 1 | != 1 | ||
</pre> | </pre> | ||
== | ==Asignación== | ||
Asignar valores a variables toma muchos bytes menos uno. | |||
=== | ===Ejemplos=== | ||
<pre> | <pre> | ||
string s; //12 bytes | string s; //12 bytes | ||
s; //6 bytes | s; //6 bytes | ||
""; //3 bytes ( | ""; //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> | ||
Pero... | |||
<pre> | <pre> | ||
string s = ""; //12 bytes | string s = ""; //12 bytes | ||
Line 197: | 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> | ||
== | |||
==Declaraciones== | |||
<pre> | <pre> | ||
if 6 | if 6 | ||
Line 207: | Line 212: | ||
state 5 | state 5 | ||
</pre> | </pre> | ||
=== | ===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) | ||
// | //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) | ||
// | //Haz algo aquí | ||
} | } | ||
</pre> | </pre> | ||
==Typecasting== | ==Moldeado de Tipos (Typecasting)== | ||
<pre> | <pre> | ||
integer 10 | integer 10 | ||
Line 229: | Line 234: | ||
</pre> | </pre> | ||
==Estados== | ==Estados== | ||
14 bytes | 14 bytes por cualquier evento en un estado + 1 por cada parámetro | ||
17 bytes | 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é? | |||
<pre> | <pre> | ||
default { | default { |
Latest revision as of 16:32, 24 October 2008
Portal de LSL | Funciones | Eventos | Tipos | Operadores | Constantes | Control de Flujo | Biblioteca de Scripts | Tutoriales |
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()); } }