/*
* xtc - The eXTensible Compiler
* Copyright (C) 2005 Robert Grimm
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*/
package xtc.util;
import java.io.BufferedReader;
import java.io.FileReader;
/**
* A small utility program to compute a tool's throughput. This
* program takes as its input a text file, which contains one or more
* <file size in bytes, latency in seconds> pairs. Each pair is
* specified on its own line, with the first number being a long
* number, the second number being a double number, and the two
* numbers being separated by a single space.
*
* @author Robert Grimm
* @version $Revision: 1.4 $
*/
public class Throughput {
/** Compute the throughput for the file specified on the command line. */
public static void main(String[] args) {
try {
Statistics sizes = new Statistics();
Statistics latencies = new Statistics();
BufferedReader in = new BufferedReader(new FileReader(args[0]));
for (String line = in.readLine(); null != line; line = in.readLine()) {
int idx = line.indexOf(' ');
long size = Long.parseLong(line.substring(0, idx));
double latency = Double.parseDouble(line.substring(idx+1));
sizes.add(size / 1024.0);
latencies.add(latency);
}
double throughput = 1.0 / Statistics.fitSlope(sizes, latencies);
System.out.println("Overall performance : " + Statistics.round(throughput)
+ " KB/s");
} catch (Exception x) {
System.exit(1);
}
System.exit(0);
}
}