public function end()
    {
        \unregister_tick_function(array($this, 'tickFunction'));
        while ($this->funcStack) {
            $this->popStack();
        }
        // sort by totalTime descending
        \uasort($this->data, function ($valA, $valB) {
            return ($valA['totalTime'] < $valB['totalTime']) ? 1 : -1;
        });
        $data =  \array_map(function ($row) {
            $row['totalTime'] = \round($row['totalTime'], 6);
            $row['ownTime'] = \round($row['ownTime'], 6);
            return $row;
        }, $this->data);
        $this->data = array();
        $this->funcStack = array();
        $this->isProfiling = false;
        $this->rootStack = array();
        return $data;
    }