package com.cloudera.util;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import com.google.common.base.Preconditions;
long start;
long last;
PrintWriter out;
PrintWriter log;
List<String> values = new ArrayList<String>();
String name;
public Benchmark(String name, PrintWriter o, PrintWriter l) {
Preconditions.checkNotNull(o);
Preconditions.checkNotNull(l);
this.name = name;
out = o;
log = l;
try {
String host = InetAddress.getLocalHost().getHostName();
values.add(host);
} catch (UnknownHostException e) {
values.add("localhost");
e.printStackTrace();
}
start = System.nanoTime();
last = start;
flushMemory();
Runtime r = Runtime.getRuntime();
long fmem = r.freeMemory();
long tmem = r.totalMemory();
long umem = tmem - fmem;
out.printf("[%,18dus, %,18d b mem]\tStarting (after gc) \n", 0, umem);
}
this(null, new PrintWriter(new OutputStreamWriter(System.out)),
new PrintWriter(new OutputStreamWriter(System.err)));
}
this(name, new PrintWriter(new OutputStreamWriter(System.out)),
new PrintWriter(new OutputStreamWriter(System.err)));
}
public void mark(Object... logs) {
StringBuffer b = new StringBuffer();
boolean first = true;
for (Object o : logs) {
if (!first)
b.append(',');
b.append(o.toString());
first = false;
values.add(o.toString());
}
_mark(b.toString());
}
long now = System.nanoTime();
long delta = (now - last);
long cumulative = (now - start);
flushMemory();
Runtime r = Runtime.getRuntime();
long fmem = r.freeMemory();
long tmem = r.totalMemory();
long umem = tmem - fmem;
out.printf("[%,18dns d %,18dns %,18d b mem]\t%s\n", cumulative, delta,
umem, s);
values.add("" + delta);
values.add("" + umem);
last = System.nanoTime();
}
out.flush();
printCsvLog(log);
}
return out;
}
return log;
}
Preconditions.checkNotNull(pw);
boolean first = true;
if (name != null) {
pw.print(name);
first = false;
}
for (String s : values) {
if (!first)
pw.print(",");
pw.print(s);
first = false;
}
pw.println();
pw.flush();
}
System.gc();
}
Vector<byte[]> v = new Vector<byte[]>();
int count = 0;
int size = 1048576;
while (size > 1) {
try {
for (; true; count++) {
v.addElement(new byte[size]);
}
}
catch (OutOfMemoryError bounded) {
size = size / 2;
}
}
v = null;
v = new Vector<byte[]>();
}
}