Wayfinder и количество документов в контейнере

Есть довольно частая задача - вывести меню до определенного уровня вместе с количеством страниц в каждом разделе. Новички обычно спотыкаются на ней и задают вопросы "а как?!".
Видел разные мнения, в основном, что это очень медленно и сложно, xPDO тормозит, надо писать свой сниппет и т.д. Конечно, все это ерунда и нас, как всегда, выручит Wayfinder.
Итак, обычный вызов сниппета, можно даже некэшированный:
[[!Wayfinder?
    &startId=`2`
    &level=`3`
    &rowTpl=`tpl.Wf.row`
]]

время работы: [^t^]
Обычный чанк tpl.Wf.row, только с вызовом особого сниппета в виде фильтра вывода.
<li[[+wf.id]][[+wf.classes]]>
    <a href="[[+wf.link]]" [[+wf.attributes]]>[[+wf.linktext]]</a> ([[+id:getItemsCount]])
    [[+wf.wrapper]]
</li>
И необычный сниппет getItemsCount, который мы вызываем один раз на каждый пункт меню. То есть, очень много раз.
$ids = $modx->getChildIds($input);
$count = 0;
if (!empty($ids)) {
    $count = $modx->getCount('modResource', array(
        'id:IN' => $ids
        ,'published' => 1
        ,'deleted' => 0
        ,'hidemenu' => 0
        ,'isfolder' => 0
    ));
}
return $count;
И получается вот такая картина:
Как вы думаете, сколько времени занимает генерация каталога из 1000 товаров на 3 уровня вглубь с подсчетом вложенных ресурсов в каждой позиции?

0.8103 s

А на 2 уровня? #### 0.3650 s
Из кэша, соответственно: 0.0820 s и 0.0684 s. Ужасно тормозной xPDO, зачем его только придумали?