Package org.jnode.test.core

Source Code of org.jnode.test.core.PerfCtrTest

/*
* $Id$
*
* Copyright (C) 2003-2014 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]));
            }
        }
    }
}
TOP

Related Classes of org.jnode.test.core.PerfCtrTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.