Для начала вспомним, как отрисовывается дерево view. При отрисовке любого лэйаута вызываются методы onMeasure(), onLayout() и onDraw().

На шаге onMeasure() лэйаут передает желаемые значения размеров каждой дочерней view. View сохраняет размеры, которые позже используется при вызове onLayout().

При вызове onLayout() дочерние view располагаются на лэйауте с использованием размеров, полученных на шаге onMeasure().

На шаге onDraw() происходит отрисовка дерева view.

Обычно в LinearLayout каждый из этих методов вызывается один раз, но при использовании атрибута weight – фаза onMeasure() выполняется в два прохода. В этом случае перформанс LinearLayout становится таким же как у RelativeLayout.