package eu.play_project.dcep.distribution.tests.srbench.performance; import java.io.Serializable; /** * Measure eventrate calculated by counting events and reading System.nanoTime(). * @author sobermeier * */ public class MeasurementUnit implements Serializable{ /** * */ private static final long serialVersionUID = 100L; private long numberOfEvents = 0; private long startTime = 0; private long n; private static MeasurementUnit unit = new MeasurementUnit(); private MeasurementUnit(){} public static MeasurementUnit getMeasurementUnit(){ return unit; } public void startNewMeasuringPeriod(){ startTime = System.nanoTime(); numberOfEvents = 0; } public void calcRateForNEvents(long n){ this.n = n; startNewMeasuringPeriod(); } public synchronized void nexEvent(){ numberOfEvents++; if((numberOfEvents%n)==0){ System.out.println(System.currentTimeMillis() + "\t" +getEventsPerSecond()); startTime = System.nanoTime(); numberOfEvents = 0; } } public void reset(){ startTime = 0; numberOfEvents = 0; } public double getEventsPerSecond(){ return numberOfEvents / ((System.nanoTime() - startTime)/1000000000.0); } }