В статье Loop Recognition в С++/Java/Go/ Scala (pdf) мы находим следующую цитату в разделе С++ Tunings
Структурный пилинг. Структура
UnionFindNode
имеет 3 холодных поля:type_
,loop_
иheader_
. Поскольку узлы распределены в массив, это хороший кандидат на оптимизацию пилинга. Три поля могут быть очищены в отдельный массив. Обратите внимание наheader_
поле также мертво - но удаление его имеет очень мало производительности влияние. Полеname_
в структуреBasicBlock
также мертво, но он хорошо вписывается в пространство заполнения, поэтому он не удаляется.
Может кто-нибудь объяснить мне, что такое холодные/мертвые поля, и какая оптимизация пилинга (я понимаю, что сделал автор, но в чем причина этого)?