/*
* $Id$
*
* Copyright (C) 2003-2015 JNode.org
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; If not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jnode.test.core;
import org.jnode.util.NumberUtils;
import org.jnode.vm.performance.PerformanceCounterEvent;
import org.jnode.vm.performance.PerformanceCounters;
import org.jnode.vm.scheduler.VmProcessor;
/**
* @author Ewout Prangsma (epr@users.sourceforge.net)
*/
public class PerfCtrTest {
/**
* @param args
*/
public static void main(String[] args) {
PerformanceCounters perfCtr = VmProcessor.current()
.getPerformanceCounters();
if (perfCtr.getMaximumCounters() == 0) {
System.out.println("No counters available");
return;
}
if (args.length == 0) {
System.out.println("Available events:");
for (PerformanceCounterEvent evt : perfCtr.getAvailableEvents()) {
System.out.println(evt);
}
System.out.println();
} else {
PerformanceCounterEvent[] events = new PerformanceCounterEvent[perfCtr
.getMaximumCounters()];
int i = 0;
for (String arg : args) {
if (i >= events.length) {
break;
}
PerformanceCounterEvent evt = perfCtr.getAvailableEvent(arg);
if (evt != null) {
events[i++] = evt;
}
}
// for (PerformanceCounterEvent evt : perfCtr.getAvailableEvents())
// {
// if (i >= events.length) {
// break;
// }
// events[i++] = evt;
// }
if (i < events.length) {
PerformanceCounterEvent[] evt2 = new PerformanceCounterEvent[i];
System.arraycopy(events, 0, evt2, 0, i);
events = evt2;
}
long[] counters = new long[events.length];
perfCtr.startCounters(events);
ArithOpt.main(new String[0]);
perfCtr.getCounterValues(counters);
perfCtr.stopCounters();
for (i = 0; i < events.length; i++) {
System.out.println(events[i].getId() + " 0x"
+ NumberUtils.hex(counters[i]));
}
}
}
}