Windows data recovery software full version free download

  • Mac data recovery software full version free download

  •   Aunque un gran número de operaciones matriz se realiza generalmente en PHP hay un problema en cierta medida de la posible reacción de la programación, pero una estimación aproximada de la memoria ocupada por la matriz es necesaria.

      En primer lugar para sentir la matriz de enteros con 1000 elementos ocupan memoria:

      Copia el código de código es el siguiente:

      eco memory_get_usage () . "\ N";

      $ A = Array ();

      for ($ i = 0; i $<1000; $i++) {

      $ A [$ i] = $ i + $ i;

      }

      eco memory_get_usage () . "\ N";

      for ($ i = 1,000; $ i<2000; $i++) {

      $ A [$ i] = $ i + $ i;

      }

      eco memory_get_usage () . "\ N";

      La salida es:

      58176

      162 956

      267 088

      Puede saber acerca de la matriz de enteros 1000 100k elementos de memoria necesitan tomar el promedio de cada elemento 100 bytes.El C total neta en un solo 4k.memory_get_usage () devuelve los resultados no están todos ocupados la matriz, pero incluyendo también algo de PHP se ejecuta algunos de la distribución estructural de la misma, que puede ser generada por un conjunto de funciones integradas más cerca del espacio real:

      Copia el código de código es el siguiente:

      echo "init mem:" . memory_get_usage () . "\ N";

      $ A = array_fill (0, 10 000, 1);

      eco "10k elementos:" . memory_get_usage () . "Sistema:" . memory_get_usage (true) . "\ N";

      $ B = array_fill (0, 10 000, 1);

      eco "10k elementos:" . memory_get_usage () . "Sistema:" . memory_get_usage (true) . "\ N";

      obtener:

      init mem: 58468

      10k elementos: 724696, sistema: 786432

      10k elementos: 1390464, sistema: 1572864

      Desde este punto de vista parece ser el resultado de un elemento de matriz sólo ocupa alrededor de cerca de 60 bytes.Vistazo a la estructura C a una serie de variables en PHP, es necesario primero una estructura zval:

      Copia el código de código es el siguiente:

      struct {_zval_struct

      valor zvalue_value;

      refcount__gc zend_uint;

      tipo zend_uchar;

      zend_uchar is_ref__gc;

      };

      zvalue_value es un sindicato:

      Copia el código de código es el siguiente:

      _zvalue_value unión typedef {

      largo lval;

      doble dval;

      struct {

      char * val;

      int len;

      Str};

      HashTable * ht;

      obj zend_object_value;

      Zvalue_value};

      estructura zval típicamente requiere 8 + 6 = 14 bytes, PHP cada variable tiene un zval correspondiente, pero arrays, cadenas y objetos también necesitan estructura de memoria adicional, y la matriz es una tabla hash:

      Copia el código de código es el siguiente:

      typedef struct {_hashtable

      uint nTableSize;

      uint nTableMask;

      nNumOfElements uint;

      ulong nNextFreeElement;

      Cubo * pInternalPointer;

      Cubo * pListHead;

      Cubo * pListTail;

      Bucket ** arBuckets;

      dtor_func_t pDestructor;

      zend_bool persistente;

      nApplyCount unsigned char;

      zend_bool bApplyProtection;

      } Tabla de picadillo;

      estructura HashTable requiere 40 bytes, cada elemento de la matriz se almacena en la estructura de la cuchara:

      Copia el código de código es el siguiente:

      typedef struct {balde

      ulong h;

      uint nKeyLength;

      pData void *;

      pDataPtr void *;

      struct cubo * pListNext;

      struct cubo * pListLast;

      struct cubo * pNext;

      struct cubo * Plast;

      Char arKey [1];

      } Cubeta;

      estructura Bucket requiere 36 bytes, la tecla más de cuatro bytes adjuntas porción Bucket, y el elemento es probable que sea una estructura zval valor, cada matriz se le asigna un adicionales arBuckets apuntado por la matriz de punteros Bucket, mientras que apenas cada elemento adicional que necesita un puntero, pero la situación real podría ser peor.Este cálculo de un elemento de matriz se ocupará de 54 bytes, no muy por encima de la estimación.

      Una matriz vacía ocupa al menos 14 (zval) + 40 (HashTable) + 32 (arBuckets) = 86 bytes, ya que debe ser una posición variable en la tabla de símbolos, es un elemento de matriz, y por lo tanto requieren una matriz vacía variable de 118 bytes para describir y almacenar.Desde el punto de vista del espacio, el costo promedio gran variedad de peque?as, por supuesto, una secuencia de comandos no se inunda con un gran número de serie a peque?a escala, con un espacio más peque?o en el costo para obtener una rápida programación.

      Sin embargo, si la matriz se utiliza como un contenedor que es una historia totalmente diferente, y las aplicaciones prácticas a menudo se encuentran matrices multidimensionales, y la mayoría de los elementos.Por ejemplo, unidimensionales elementos de la matriz consume alrededor de 10k 540k de la memoria, y la matriz de dos dimensiones teóricamente 10k x 10 espacio requiere sólo alrededor de 6 M, pero de acuerdo con los resultados memory_get_usage es el doble que, [10k, 5,2] tridimensional 23M matriz está realmente consumida, lo que realmente no vale la pena el peque?o arsenal.

    Qué tan grande debe un análisis de matrices de PHP

    Recommend Article: