예제 #1
0
 public PSI getStackItem(String group, String item, String context) {
   synchronized (m_profiler) {
     PSI psi = new PSI(this, group, item, m_timer.get(), m_stack.size(), context);
     m_stack.push(psi);
     return psi;
   }
 }
예제 #2
0
    public void release(PSI psi) throws EWrongPSI {
      long totalTime;
      boolean bInner;
      synchronized (m_profiler) {
        PSI e = m_stack.pop();
        if (psi.getStackNumber() != e.getStackNumber()) {
          ApiAlgs.getLog(this)
              .error(
                  psi.getGroup() + "." + psi.getItem() + " / " + e.getGroup() + "." + e.getItem());
          while (psi.getStackNumber() < e.getStackNumber()) e = m_stack.pop();
        }

        totalTime = m_timer.get() - psi.getCreationTime();

        if (!m_stack.isEmpty()) {
          PSI parent = m_stack.peek();
          parent.addChildTime(totalTime);
        }
        bInner = stackContainsItem(psi);
      }
      m_profiler.reportItem(psi.getGroup(), psi.getItem(), totalTime, psi.getChildsTime(), bInner);
    }