tmf/lttng: Update 2014 copyrights
[deliverable/tracecompass.git] / org.eclipse.linuxtools.ctf.core.tests / src / org / eclipse / linuxtools / ctf / core / tests / headless / ReadTrace.java
CommitLineData
ce2388e0 1/*******************************************************************************
60ae41e1 2 * Copyright (c) 2012, 2014 Ericsson
ce2388e0
FC
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
13package org.eclipse.linuxtools.ctf.core.tests.headless;
14
15import java.text.DateFormat;
16import java.text.SimpleDateFormat;
17import java.util.Date;
18import java.util.Vector;
19
20import org.eclipse.linuxtools.ctf.core.event.EventDefinition;
21import org.eclipse.linuxtools.ctf.core.trace.CTFReaderException;
22import org.eclipse.linuxtools.ctf.core.trace.CTFTrace;
23import org.eclipse.linuxtools.ctf.core.trace.CTFTraceReader;
24
be6df2d8 25@SuppressWarnings("javadoc")
ce2388e0
FC
26public class ReadTrace {
27
28 /**
29 * @param args
30 */
ce2388e0 31 public static void main(String[] args) {
aa572e22 32 final String TRACE_PATH = "traces/kernel";
ce2388e0
FC
33
34 // Change this to enable text output
bfe038ff 35 final boolean USE_TEXT = false;
ce2388e0
FC
36
37 final int LOOP_COUNT = 1;
38
39 // Work variables
6a5251eb 40 long nbEvent = 0L;
3de23137 41 Vector<Double> benchs = new Vector<>();
ce2388e0
FC
42 CTFTrace trace = null;
43 long start, stop;
44 for (int loops = 0; loops < LOOP_COUNT; loops++) {
45 try {
46 nbEvent = 0L;
47 trace = new CTFTrace(TRACE_PATH);
48 } catch (CTFReaderException e) {
49 // do nothing
50 }
ce2388e0
FC
51 start = System.nanoTime();
52 if (USE_TEXT) {
53 System.out.println("Event, " + " Time, " + " type, " + " CPU ");
54 }
db8e8f7d
AM
55 try {
56 if (trace != null) {
57 CTFTraceReader traceReader = new CTFTraceReader(trace);
ce2388e0 58
db8e8f7d 59 start = System.nanoTime();
ce2388e0 60
db8e8f7d
AM
61 while (traceReader.hasMoreEvents()) {
62 EventDefinition ed = traceReader.getCurrentEventDef();
63 nbEvent++;
64 if (USE_TEXT) {
65 String output = formatDate(ed.getTimestamp()
66 + trace.getOffset());
67 System.out.println(nbEvent + ", "
68 + output + ", " + ed.getDeclaration().getName()
69 + ", " + ed.getCPU() + ed.getFields().toString());
70 }
71 // long endTime = traceReader.getEndTime();
72 // long timestamp =
73 // traceReader.getCurrentEventDef().getTimestamp();
74 traceReader.advance();
ce2388e0 75 }
db8e8f7d
AM
76 // Map<Long, Stream> streams =
77 // traceReader.getTrace().getStreams();
ce2388e0 78 }
db8e8f7d 79 stop = System.nanoTime();
bfe038ff 80
db8e8f7d
AM
81 System.out.print('.');
82 double time = (stop - start) / (double) nbEvent;
83 benchs.add(time);
84 } catch (CTFReaderException e) {
85 System.out.println("error");
86 }
ce2388e0
FC
87 }
88 System.out.println("");
89 double avg = 0;
90 for (Double val : benchs) {
91 avg += val;
92 }
93 avg /= benchs.size();
94 System.out.println("Time to read " + nbEvent + " events = " + avg
bfe038ff 95 + " ns/event");
ce2388e0
FC
96 for (Double val : benchs) {
97 System.out.print(val);
98 System.out.print(", ");
99 }
ce2388e0
FC
100 }
101
102 /**
103 * @param timestamp
104 * the timestamp in UTC to convert to nanoseconds.
105 * @return formatted string.
106 */
107 private static String formatDate(long timestamp) {
108 Date d = new Date(timestamp / 1000000);
4a9c1f07 109 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.");
ce2388e0
FC
110 String output = df.format(d) + (timestamp % 1000000000);
111 return output;
112 }
113}
This page took 0.042086 seconds and 5 git commands to generate.