亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stopwatch.java

?? 本套系統采用了業界當前最為流行的beanAction組件
?? JAVA
字號:
/*
 *  Copyright 2004 Clinton Begin
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.ibatis.common.util;

import com.ibatis.common.logging.Log;
import com.ibatis.common.logging.LogFactory;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Stopwatch class used for testing.
 */
public class Stopwatch {

  private static final Log log = LogFactory.getLog(Stopwatch.class);

  private Map taskMap = new HashMap();

  private String currentTaskName = null;
  private long currentTaskTime = 0;

  /**
   * Get an iterator of the tasks
   * @return - the Iterator
   */
  public Iterator getTaskNames() {
    return taskMap.keySet().iterator();
  }

  /**
   * Get the number of times assigned to a task
   * @param taskName - the name of the task
   * @return - the number of times
   */
  public long getTaskCount(String taskName) {
    return ((TaskStat) taskMap.get(taskName)).getCount();
  }

  /**
   * Get the total time added to a task
   * @param taskName - the name of the task
   * @return - the total time added to the task
   */
  public long getTotalTaskTime(String taskName) {
    return ((TaskStat) taskMap.get(taskName)).getTotal();
  }

  /**
   * Get the maximum time added to a task
   * @param taskName - the name of the task
   * @return - the maximum time added to a task
   */
  public long getMaxTaskTime(String taskName) {
    return ((TaskStat) taskMap.get(taskName)).getMax();
  }

  /**
   * Get the minimum time added to a task
   * @param taskName - the name of the task
   * @return - the minimum time added to a task
   */
  public long getMinTaskTime(String taskName) {
    return ((TaskStat) taskMap.get(taskName)).getMin();
  }

  /**
   * Get the average time added to a task
   * @param taskName - the name of the task
   * @return - the average time added to a task
   */
  public long getAvgTaskTime(String taskName) {
    return ((TaskStat) taskMap.get(taskName)).getAverage();
  }

  /**
   * Start (create) a task
   * @param taskName - the name of the task
   */
  public void start(String taskName) {
    if (log.isDebugEnabled()) {
      log.debug("Starting: " + taskName);
    }
    this.currentTaskName = taskName;
    currentTaskTime = System.currentTimeMillis();
  }

  /**
   * Stop the timer on a task
   */
  public void stop() {
    if (log.isDebugEnabled()) {
      log.debug("Stopping: " + currentTaskName);
    }
    currentTaskTime = System.currentTimeMillis() - currentTaskTime;
    appendTaskTime(currentTaskName, currentTaskTime);
  }

  private synchronized void appendTaskTime(String taskName, long taskTime) {
    TaskStat stat = (TaskStat) taskMap.get(taskName);
    if (stat == null) {
      stat = new TaskStat();
      taskMap.put(taskName, stat);
    }
    stat.appendTaskTime(taskTime);
  }

  /**
   * Merge another StopWatch into this one
   * @param watch - the StopWatch to merge into this one
   */
  public void mergeStopwatch(Stopwatch watch) {
    Iterator names = watch.getTaskNames();
    while (names.hasNext()) {
      String name = (String) names.next();
      long taskTime = watch.getTotalTaskTime(name);
      appendTaskTime(name, taskTime);
    }
  }

  /**
   * Reset all of the timers in this StopWatch
   */
  public synchronized void reset() {
    taskMap.clear();
  }

  public String toString() {
    StringBuffer buffer = new StringBuffer();
    buffer.append("Task,Count,Total,Max,Min,Avg\n");
    Iterator names = getTaskNames();
    while (names.hasNext()) {
      String name = (String) names.next();
      long taskCount = getTaskCount(name);
      long taskTime = getTotalTaskTime(name);
      long taskMin = getMinTaskTime(name);
      long taskMax = getMaxTaskTime(name);
      long taskAvg = getAvgTaskTime(name);
      buffer.append(name + "," + taskCount + "," + taskTime + "," + taskMax + "," + taskMin + "," + taskAvg + "\n");
    }
    return buffer.toString();
  }

  private class TaskStat {
    private static final long UNSET = -999999;

    private long count = 0;
    private long total = 0;
    private long min = UNSET;
    private long max = UNSET;

    /**
     * Add some time to a task
     * @param taskTime - the time to add
     */
    public void appendTaskTime(long taskTime) {
      count++;
      total += taskTime;
      if (max == UNSET || taskTime > max) {
        max = taskTime;
      }
      if (min == UNSET || taskTime < min) {
        min = taskTime;
      }
    }

    /**
     * Get the total time for the task
     * @return - the total time
     */
    public long getTotal() {
      return total;
    }

    /**
     * Get the maximum of the times added to the task
     * @return - the max value
     */
    public long getMax() {
      return max;
    }

    /**
     * Get the minimum of the times added to the task
     * @return - the minimum value
     */
    public long getMin() {
      return min;
    }

    /**
     * Get the number of times added to the task
     * @return - the number of times
     */
    public long getCount() {
      return count;
    }

    /**
     * Get the average of the times added to the task
     * @return - the average
     */
    public long getAverage() {
      if (count > 0) {
        return Math.round((double) total / (double) count);
      } else {
        return 0;
      }
    }

  }

}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久久久久久久| 久久av中文字幕片| 99视频国产精品| 国产精品―色哟哟| 国产乱码精品1区2区3区| 久久嫩草精品久久久精品| 国产乱对白刺激视频不卡| 亚洲精品一线二线三线无人区| 韩国理伦片一区二区三区在线播放| 精品国一区二区三区| 国产精品一区二区三区四区 | 在线一区二区三区四区| 亚洲一区二区视频| 欧美精品第1页| 国产成人免费视频一区| 亚洲人妖av一区二区| 欧美美女网站色| 国产一区二区不卡在线| 亚洲欧美区自拍先锋| 欧美日韩国产天堂| 国产一区二区三区在线看麻豆| 国产精品欧美精品| 欧美另类变人与禽xxxxx| 久久av老司机精品网站导航| 18欧美亚洲精品| 欧美久久久久久久久| 国产美女av一区二区三区| 国产精品久久福利| 欧美一区二区三区四区高清| 国产99久久久国产精品潘金网站| 亚洲一区成人在线| 国产亚洲欧美日韩日本| 欧美特级限制片免费在线观看| 久久99国产精品免费| 亚洲毛片av在线| 久久免费看少妇高潮| 在线免费精品视频| 国产精品一线二线三线| 亚洲图片一区二区| 欧美国产一区在线| 制服丝袜亚洲网站| 色综合欧美在线| 国产伦精品一区二区三区视频青涩| 亚洲精品第1页| 亚洲国产精品av| 日韩欧美电影在线| 欧美在线|欧美| 成人高清免费在线播放| 九九视频精品免费| 日本免费新一区视频| 一区二区视频在线看| 日本一区二区三区高清不卡| 日韩一区二区三区四区| 在线视频一区二区免费| 成人av动漫网站| 国产激情91久久精品导航| 亚洲精品国产第一综合99久久 | 欧美韩日一区二区三区| 欧美精品一区二区三区一线天视频 | 亚洲精品大片www| 国产欧美精品一区二区三区四区 | 精品亚洲欧美一区| 日韩二区三区四区| 一区二区三区国产| 中文字幕一区二区在线播放| 久久久久久久久蜜桃| 精品美女在线观看| 日韩女优电影在线观看| 欧美理论在线播放| 欧美美女网站色| 欧美一区二区三区视频在线 | 综合久久久久久久| 国产精品另类一区| 日本一区二区三区免费乱视频 | 亚洲欧美在线另类| 自拍av一区二区三区| 国产精品丝袜在线| 中文字幕一区二区三区在线不卡| 国产三级精品三级| 日本一区二区三区免费乱视频 | 国模套图日韩精品一区二区| 麻豆国产精品官网| 久久精品免费看| 国产在线精品一区二区三区不卡| 麻豆91精品视频| 国内精品免费**视频| 国产一区二区精品久久99| 高清不卡在线观看| 99这里只有精品| 91麻豆免费看| 欧美伊人久久久久久久久影院| 在线免费观看不卡av| 欧美性猛交xxxx黑人交| 欧美日韩不卡一区二区| 欧美va亚洲va| 国产精品毛片大码女人| 亚洲欧美日韩一区二区| 亚洲成a天堂v人片| 久久福利资源站| 成人av动漫网站| 欧美日韩在线精品一区二区三区激情| 欧美精品一卡两卡| 26uuu国产日韩综合| 最新中文字幕一区二区三区| 亚洲国产日韩一级| 激情综合五月婷婷| 97精品超碰一区二区三区| 欧美日韩一区二区三区视频| 91精品欧美福利在线观看| 欧美精品一区二区三| 亚洲日本韩国一区| 奇米影视一区二区三区小说| 国产ts人妖一区二区| 在线一区二区视频| 精品乱码亚洲一区二区不卡| 日韩美女久久久| 久久av中文字幕片| 91啦中文在线观看| 精品国产91洋老外米糕| 亚洲美女视频一区| 狠狠色狠狠色合久久伊人| 91美女片黄在线观看91美女| 日韩欧美国产高清| 一区二区三区在线视频观看58| 久久狠狠亚洲综合| 在线视频欧美区| 精品国产一区二区在线观看| 亚洲三级理论片| 国产在线一区二区综合免费视频| 91福利视频在线| 国产色产综合色产在线视频| 亚洲第一成人在线| 成人动漫一区二区| 26uuu亚洲婷婷狠狠天堂| 伊人色综合久久天天人手人婷| 精品一区二区三区在线观看 | 国产精品三级视频| 奇米一区二区三区av| 日本伦理一区二区| 中文字幕成人在线观看| 久久国产日韩欧美精品| 欧美私人免费视频| 亚洲欧美一区二区三区孕妇| 国产一区二区三区美女| 欧美美女视频在线观看| 亚洲精品国产无天堂网2021| 成人av在线一区二区| 久久久久久久久久久黄色| 日韩专区一卡二卡| 在线观看区一区二| 亚洲欧美日韩在线| 成人久久视频在线观看| 欧美成人伊人久久综合网| 天天av天天翘天天综合网| 色香色香欲天天天影视综合网| 国产欧美日韩视频一区二区| 久久精品二区亚洲w码| 日韩一区二区三区在线视频| 日本中文在线一区| 宅男噜噜噜66一区二区66| 天天射综合影视| 欧美一卡2卡3卡4卡| 日韩一区精品视频| 欧美疯狂性受xxxxx喷水图片| 亚洲综合色婷婷| 欧美亚洲一区三区| 亚洲午夜免费福利视频| 欧美色视频在线| 亚洲123区在线观看| 精品视频在线免费看| 日韩精品午夜视频| 欧美一级二级在线观看| 蜜臀av亚洲一区中文字幕| 欧美精品18+| 青草国产精品久久久久久| 日韩免费高清av| 激情综合色综合久久综合| 欧美精品一区二区三区高清aⅴ | 国产精华液一区二区三区| 久久色.com| av网站一区二区三区| 亚洲乱码国产乱码精品精小说| 色欧美日韩亚洲| 天天亚洲美女在线视频| 日韩精品一区二| 国产成人aaaa| 亚洲精品国产品国语在线app| 欧美日韩美少妇| 国产美女精品在线| 日韩理论片在线| 在线电影院国产精品| 国内精品伊人久久久久影院对白| 中文成人av在线| 欧美性猛交xxxx乱大交退制版| 欧美a级理论片| 国产精品成人一区二区三区夜夜夜| 色综合视频一区二区三区高清| 亚洲一区二区三区免费视频| 日韩三级视频在线观看| 高清不卡一二三区|