package javathreads.examples.ch15;
import java.util.*;
import java.text.*;
import java.io.*;
public class ScaleTest {
private int nIter = 200;
private int nRows = 2000;
private int nCols = 200;
private int nThreads = 8;
Class target;
ScaleTest(int nIter, int nRows, int nCols, int nThreads,
String className) {
this.nIter = nIter;
this.nRows = nRows;
this.nCols = nCols;
this.nThreads = nThreads;
try {
target = Class.forName(className);
} catch (ClassNotFoundException cnfe) {
System.out.println(cnfe);
System.exit(-1);
}
}
void chart() {
long sumTime = 0;
long startLoop = System.currentTimeMillis();
try {
ScaleTester st = (ScaleTester) target.newInstance();
for (int i = 0; i < nIter; i++) {
st.init(nRows, nCols, nThreads);
System.gc();
long then = System.currentTimeMillis();
float ans[][] = st.doCalc();
long now = System.currentTimeMillis();
sumTime += (now - then);
}
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
long endLoop = System.currentTimeMillis();
long calcTime = endLoop - startLoop;
System.err.println("Loop time " + sumTime +
" (" + ((sumTime * 100) / calcTime) + "%)");
System.err.println("Calculation time " + calcTime);
}
public static void main(String args[]) {
if (args.length != 5) {
System.out.println(
"Usage: java ScaleTester nIter nRows nCols nThreads className");
System.exit(-1);
}
ScaleTest sc = new ScaleTest(Integer.parseInt(args[0]),
Integer.parseInt(args[1]),
Integer.parseInt(args[2]),
Integer.parseInt(args[3]),
args[4]);
sc.chart();
}
}
|