/* * Title: CloudSim Toolkit * Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds * Licence: GPL - http://www.gnu.org/copyleft/gpl.html * * Copyright (c) 2009-2012, The University of Melbourne, Australia */ package org.cloudbus.cloudsim.util; import java.util.HashMap; import java.util.Map; /** * Measurement of execution times of CloudSim's methods. * * @author Anton Beloglazov * @since CloudSim Toolkit 3.0 */ public class ExecutionTimeMeasurer { /** A map of execution times where each key * represents the name of the method/process being its * execution time computed and each key is the * time the method/process started (in milliseconds). * Usually, this name is the method/process name, making * easy to identify the execution times into the map. * * @todo The name of the attribute doesn't match with what it stores. * It in fact stores the method/process start time, * no the time it spent executing. */ private final static Map<String, Long> executionTimes = new HashMap<String, Long>(); /** * Start measuring the execution time of a method/process. * Usually this method has to be called at the first line of the method * that has to be its execution time measured. * * @param name the name of the method/process being measured. * @see #executionTimes */ public static void start(String name) { getExecutionTimes().put(name, System.currentTimeMillis()); } /** * Finalizes measuring the execution time of a method/process. * * @param name the name of the method/process being measured. * @return the time the method/process spent in execution (in seconds) * @see #executionTimes */ public static double end(String name) { double time = (System.currentTimeMillis() - getExecutionTimes().get(name)) / 1000.0; getExecutionTimes().remove(name); return time; } /** * Gets map the execution times. * * @return the execution times map * @see #executionTimes */ public static Map<String, Long> getExecutionTimes() { return executionTimes; } }