LINUX.ORG.RU

История изменений

Исправление pftBest, (текущая версия) :

Если ты знаком с растом, то наверное слышал про lazy_static!. Например я написал такую программу, которая обязательно инициализирует этот статик первой строчкой в main, а дальше в некоторых вызовах в глубине программы он используется. Как ты предлагаешь заставить constant propagation убрать лоад и сравнение с нулем на каждом обращении к этому статику?

На самом деле с практической точки зрения это полезно, если кто-то неакуратно полезет в код и случайно уберет инициализацию в main, то программа не упадет. Но с точки зрения производительности, исполнять лишний код на каждом обращении к статикам не хорошо.

P.S. Когда в язык добавили поддержку union, то появилась возможность сделать untagged option, который частично решает эту проблему. Его придумали для экономии ресурсов на микроконтроллерах.

Исходная версия pftBest, :

Если ты знаком с растом, то наверное слышал про lazy_static!. Например я написал такую программу, которая обязательно инициализирует этот статик первой строчкой в main, а дальше в некоторых вызовах в глубине программы он используется. Как ты предлагаешь заставить constant propagation убрать лоад и сравнение с нулем на каждом обращении к этому статику?

На самом деле с практической точки зрения это полезно, если кто-то неакуратно полезет в код и случайно уберет инициализацию в main, то программа не упадет. Но с точки зрения производительности, исполнять лишний код на каждом обращении к статикам не хорошо.