Almacenamiento muertoEn programación se conoce como almacenamiento muerto o dead store a la acción de asignarle un valor cualquiera a una variable local y no utilizarlo en ninguna instrucción subsecuente.[1] Este tipo de error de software es indeseable debido a que requiere tiempo de computación y accesos a memorias de forma innecesaria, lo que impacta en el rendimiento. Existen técnicas de optimización en compiladores como por ejemplo la eliminación de código muerto que intentan encontrar y eliminar este tipo de prácticas del código fuente.[2] Si el propósito de una variable es la intención de sobrescribir un dato, por ejemplo, cuando una contraseña se está eliminando de la memoria, las optimizaciones de almacenamiento muerto puede causar que la escritura no ocurra, provocando un problema de seguridad.[3] Algunos sistemas tienen librerías específicas diseñadas para evitar estas peligrosas optimizaciones. Por ejemplo Ejemplopublic int sum(int a, int b){
int c = a + b;
return a+b;
En este caso la variable c se asigna pero nunca se usa (este ejemplo también puede ser tomado como código redundante ya que se devuelve el mismo valor que tiene c). Esta optimización puede llegar a brindar buenos resultados cuando el almacenamiento muerto se encuentra ubicado dentro de bucles ya que la optimización se lleva a cabo tantas veces como grande sea el índice del bucle. function func(a, b) {
var x;
var i = 300;
while (i--) {
x = a + b; // no se usa
}
}
En este caso si se logra identificar el almacenamiento muerto y retirar se optimizaría 300 veces por cada llamada a la función. Referencias
|