}, $routes);
$count = count($routes);
$seq = new \Windwalker\Router\Matcher\SequentialMatcher();
$seq->setRoutes($routeItems)->setDebug(false);
$trie = new \Windwalker\Router\Matcher\TrieMatcher();
$trie->setRoutes($routeItems)->setDebug(false);
$bin = new \Windwalker\Router\Matcher\BinaryMatcher();
$bin->setRoutes($routeItems)->setDebug(false);
$bench = new \Windwalker\Profiler\Benchmark();
$avg = array();
$bench->addTask('Sequential', function () use($seq, $routes, $count, &$avg) {
    static $i = 0;
    if ($i + 1 > $count) {
        $i = 0;
    }
    $r = $seq->match($routes[$i]);
    if ($r->getName() == trim($routes[$i], '/')) {
        echo '.';
        $avg['seq'] += $seq->getCount();
    }
    $i++;
});
$bench->addTask('Binary', function () use($bin, $routes, $count, &$avg) {
    static $i = 0;
    if ($i + 1 > $count) {
        $i = 0;
    }
    $r = $bin->match($routes[$i]);
    if ($r->getName() == trim($routes[$i], '/')) {
        echo '.';
        $avg['bin'] += $bin->getCount();
    }