code: public function timeEnd($label = null, $returnOrTemplate = false, $precision = 4)
      {
          $args = \func_get_args();
          $meta = $this->internal->getMetaVals(
              $args,
              array('channel' => $this->cfg['channel']),
              array(
                  'label' => null,
                  'returnOrTemplate' => false,
                  'precision' => 4,
              )
          );
          \extract($args);
          if (\is_bool($label) || \strpos($label, '%time') !== false) {
              if (\is_numeric($returnOrTemplate)) {
                  $precision = $returnOrTemplate;
              }
              $returnOrTemplate = $label;
              $label = null;
          }
          $ret = $this->timeGet($label, true, null); // get non-rounded running time
          if (isset($label)) {
              if (isset($this->data['timers']['labels'][$label])) {
                  $this->data['timers']['labels'][$label] = array(
                      $ret,  // store the new "running" time
                      null,  // "pause" the timer
                  );
              }
          } else {
              $label = 'time';
              \array_pop($this->data['timers']['stack']);
          }
          if (\is_int($precision)) {
              // use number_format rather than round(), which may still run decimals-a-plenty
              $ret = \number_format($ret, $precision, '.', '');
          }
          $this->doTime($ret, $returnOrTemplate, $label, $meta);
          return $ret;
      }
docs: Behaves like a stopwatch.. returns running time
  If label is passed, timer is "paused"
  If label is not passed, timer is removed from timer stack
  
  @param string         $label            unique label
  @param string|boolean $returnOrTemplate string: "%label: %time"
  boolean:  If true, only return time, rather than log it
  @param integer        $precision        rounding precision (pass null for no rounding)
  
  @return float|string (numeric)