Меню

Главная
Случайная статья
Настройки
Тупиковая запись
Материал из https://ru.wikipedia.org

В программировании тупиковой записью (англ. Dead Store) называется присваивание значения локальной переменной, если это значение не читается никакой из последующих инструкций. Тупиковые записи занимают процессорное время и память, не принося никакой пользы. Они могут быть обнаружены с помощью статического анализа кода.

Пример кода с тупиковой записью на языке Java:
// DeadStoreExample.java
import java.util.ArrayList;
import java.util.List;

public class DeadStoreExample {
 public static void main(String[] args) {
   List<String> list = new ArrayList<String>(); // Это присваивание является тупиковой записью, так как ArrayList никогда не читается.
   list = getList();
   System.out.println(list)
 }

 private static List<String> getList() {
   return new ArrayList<String>("hello");
 }
}


В этом примере был создан экземпляр объекта ArrayList, но он ни разу не использовался. Вместо этого переменной, которая ссылалась на него, была присвоена ссылка на другой объект. Область памяти, которая была выделена при объявлении списка ArrayList, должна быть освобождена, например, с помощью сборщика мусора.

Пример кода с тупиковой записью на языке JavaScript:
function func(a, b) {
    var x;
    var i = 300;
    while (i--) {
        x = a + b; // тупиковая запись
    }
}


В этом примере происходит многократная перезапись одной и той же локальной переменной в цикле. В то время как использоваться в программе после этого цикла может только значение, записанное на последней итерации. Таким образом, все записи в переменную x, кроме последней, являются тупиковыми.

В оптимизирующем компиляторе удалением тупиковых записей может заниматься оптимизация удаления мёртвого кода[1] либо оптимизация удаления тупиковых записей (англ. Dead Store Elimination)[2].

Примечания
  1. HTML5, and Real World Site Performance: Seventh IE9 Platform Preview Available for Developers. Дата обращения: 7 августа 2021. Архивировано из оригинала 29 января 2013 года.
  2. Майкл Ховард, Дэвид Лебланк Writing secure code (недоступная ссылка)
Downgrade Counter