perftptest.java

来自「JGRoups源码」· Java 代码 · 共 158 行

JAVA
158
字号
package org.jgroups.tests;import org.jgroups.*;import org.jgroups.protocols.PERF_TP;import org.jgroups.stack.Protocol;import java.io.*;import java.util.Vector;import java.util.LinkedList;import java.util.List;import java.util.Iterator;/** * Test of PERF_TP. Requirement: transport needs to be PERF_TP * @author Bela Ban Feb 24, 2004 * @version $Id: PerfTpTest.java,v 1.8 2005/04/18 13:55:35 belaban Exp $ */public class PerfTpTest {    JChannel ch=null;    PERF_TP  tp=null;    DataInputStream in=null;    DataOutputStream out=null;    public static void main(String[] args) {        String props=null;        int    num_msgs=1000;        int    size=1000; // bytes        String   file_name=null;        boolean  write=true;        for(int i=0; i < args.length; i++) {            if("-props".equals(args[i])){                props=args[++i];                continue;            }            if("-num".equals(args[i])) {                num_msgs=Integer.parseInt(args[++i]);                continue;            }            if("-size".equals(args[i])) {                size=Integer.parseInt(args[++i]);                continue;            }            if("-file_name".equals(args[i])) {                file_name=args[++i];                continue;            }            if("-write".equals(args[i])) {                write=true;                continue;            }            if("-read".equals(args[i])) {                write=false;                continue;            }            help();            return;        }        try {            new PerfTpTest().start(props, num_msgs, size, file_name, write);        }        catch(Exception e) {            e.printStackTrace();        }    }    private static void help() {        System.out.println("PerfTpTest [-help] [-props <properties>] [-num <num msgs>] " +                           "[-size <msg size (in bytes)] [-file_name <filename>] [-write] [-read]");    }    void start(String props, int num_msgs, int size, String file_name, boolean write) throws Exception {        Message msg;        Protocol transport;        byte[] buf=new byte[size];        Address local_addr;        View    view;        if(file_name != null) {            if(write)                out=new DataOutputStream(new FileOutputStream(file_name));            else                in=new DataInputStream(new FileInputStream(file_name));        }        ch=new JChannel(props);        ch.connect("demo");        tp=PERF_TP.getInstance();        local_addr=ch.getLocalAddress();        Vector members=new Vector();        members.add(local_addr);        view=new View(local_addr, 0, members);        ch.down(new Event(Event.BECOME_SERVER));        ch.down(new Event(Event.VIEW_CHANGE, view));        if(write) {            tp.setExpectedMessages(num_msgs);            for(int i=0; i < num_msgs; i++) {                msg=new Message(null, local_addr, buf);                ch.send(msg);                if(out != null)                    msg.writeTo(out);                if(i % 1000 == 0)                    System.out.println("sent " + i + " messages");            }        }        else {            List msgs=new LinkedList();            Vector protocols=ch.getProtocolStack().getProtocols();            transport=(Protocol)protocols.lastElement();            int i=0;            while(true) {                msg=new Message();                try {                    msg.readFrom(in);                    msgs.add(msg);                }                catch(EOFException eof) {                    break;                }            }            num_msgs=msgs.size();            System.out.println("read " + num_msgs + " msgs from file");            tp.setExpectedMessages(msgs.size()); // this starts the time            for(Iterator it=msgs.iterator(); it.hasNext();) {                msg=(Message)it.next();                i++;                transport.up(new Event(Event.MSG, msg));                if(i % 10000 == 0) {                    System.out.println("passed up " + i + " messages");                }            }        }        synchronized(tp) {            if(tp.done()) {                ;            }            else {                tp.wait();            }        }        long total=tp.getTotalTime();        double msgs_per_ms=num_msgs / (double)total;        double msgs_per_sec=msgs_per_ms * 1000;        double time_per_msg=total / (double)num_msgs;        double usec_per_msg=time_per_msg * 1000;        System.out.println("num_msgs = " + num_msgs + ", total_time = " + total + "ms");        System.out.println("msgs/millisec = " + msgs_per_ms + ", msgs/sec = " + msgs_per_sec +                "\ntime/msg = " + time_per_msg + " ms" +                " (" + usec_per_msg + " usec/msg)");        ch.close();    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?