Improve API.
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / ctfadaptor / headless / Benchmark.java
1 /*******************************************************************************
2 * Copyright (c) 2012 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Matthew Khouzam - Initial API and implementation
11 *******************************************************************************/
12 package org.eclipse.linuxtools.tmf.core.tests.ctfadaptor.headless;
13
14 import java.text.DateFormat;
15 import java.text.SimpleDateFormat;
16 import java.util.Date;
17 import java.util.Vector;
18
19 import org.eclipse.linuxtools.tmf.core.ctfadaptor.CtfIterator;
20 import org.eclipse.linuxtools.tmf.core.ctfadaptor.CtfTmfEvent;
21 import org.eclipse.linuxtools.tmf.core.ctfadaptor.CtfTmfTrace;
22 import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
23
24 public class Benchmark {
25
26 /**
27 * @param args
28 */
29 @SuppressWarnings("nls")
30 public static void main(final String[] args) {
31 final String TRACE_PATH = "testfiles/kernel";
32 final int NUM_LOOPS = 100;
33
34 // Change this to enable text output
35 final boolean USE_TEXT = true;
36
37 // try {
38 // System.in.read();
39 // } catch (final IOException e1) {
40 // e1.printStackTrace();
41 // }
42 // Work variables
43 Long nbEvent = 0L;
44 final Vector<Double> benchs = new Vector<Double>();
45 CtfTmfTrace trace = null;
46 long start, stop;
47 for (int loops = 0; loops < NUM_LOOPS; loops++) {
48 nbEvent = 0L;
49 trace = new CtfTmfTrace();
50 try {
51 trace.initTrace(null, TRACE_PATH, CtfTmfEvent.class);
52 } catch (final TmfTraceException e) {
53 loops = NUM_LOOPS +1;
54 break;
55 }
56
57 start = System.nanoTime();
58 if (nbEvent != -1) {
59 final CtfIterator traceReader = (CtfIterator) trace.seekEvent(0);
60
61 start = System.nanoTime();
62 CtfTmfEvent current = traceReader.getCurrentEvent();
63 while (current != null) {
64 nbEvent++;
65 if (USE_TEXT) {
66
67 System.out.println("Event " + traceReader.getRank() + " Time "
68 + current.getTimestamp().toString() + " type " + current.getEventName()
69 + " on CPU " + current.getSource() + " " + current.getContent().toString()) ;
70 }
71 traceReader.advance();
72 current = traceReader.getCurrentEvent();
73 }
74 }
75 stop = System.nanoTime();
76 System.out.print('.');
77 final double time = (stop - start) / (double) nbEvent;
78 benchs.add(time);
79 }
80 System.out.println("");
81 double avg = 0;
82 for (final Double val : benchs) {
83 avg += val;
84 }
85 avg /= benchs.size();
86 System.out.println("Time to read = " + avg + " events/ns");
87 for (final Double val : benchs) {
88 System.out.print(val);
89 System.out.print(", ");
90 }
91
92 }
93
94 /**
95 * @param timestamp
96 * the timestamp in UTC to convert to nanoseconds.
97 * @return formatted string.
98 */
99 private static String formatDate(final long timestamp) {
100 final Date d = new Date(timestamp / 1000000);
101 final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss."); //$NON-NLS-1$
102 final String output = df.format(d) + (timestamp % 1000000000);
103 return output;
104 }
105
106 }
This page took 0.031891 seconds and 5 git commands to generate.