Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

La preasignación

y bucles que aumentan incrementalmente el tamaño de una estructura de datos cada vez a través del bucle pueden afectar negativamente al rendimiento y al uso de memoria.forwhile Repetidamente cambiar el tamaño de las matrices a menudo requiere pasar tiempo extra en busca de bloques contiguos más grandes de memoria, y luego mover la matriz en esos bloques.MATLAB® A menudo, puede mejorar el tiempo de ejecución de código asignando previamente la cantidad máxima de espacio necesaria para la matriz.

El código siguiente muestra la cantidad de tiempo necesario para crear una variable escalar y, a continuación, aumentar gradualmente el tamaño de un bucle.xxfor

tic x = 0; for k = 2:1000000    x(k) = x(k-1) + 5; end toc
Elapsed time is 0.301528 seconds.

Si preasigna un bloque de memoria 1-by-1 millón para e inicializarlo a cero, el código se ejecuta mucho más rápido porque no es necesario reasignar repetidamente la memoria para la estructura de datos en crecimiento.x

tic x = zeros(1, 1000000); for k = 2:1000000    x(k) = x(k-1) + 5; end toc
Elapsed time is 0.011938 seconds.

Utilice la función de preasignación adecuada para el tipo de matriz que desea inicializar:

  • para matrices numéricaszeros

  • para matrices de caracterescell

La asignación previa de una matriz no doble

Cuando preasigne un bloque de memoria para mantener una matriz de algún tipo que no sea, evite usar el métododouble

A = int8(zeros(100));

Esta instrucción preasigna una matriz de 100-by-100, primero mediante la creación de una matriz completa de valores y, a continuación, convierte cada elemento en.int8doubleint8 La creación de la matriz como valores ahorra tiempo y memoria.int8 Por ejemplo:

A = zeros(100, 'int8');

Ejemplos relacionados

Más acerca de