package benchmark;
import com.sun.cldchi.jvm.JVM;
import com.sun.midp.crypto.SecureRandom;
import java.io.OutputStream;
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import org.mozilla.MemorySampler;
public class FileConnectionBench {
private static final byte[] b = new byte[1024];
void runBenchmark() {
try {
long start;
String privateDir = System.getProperty("fileconn.dir.private");
String filename = String.valueOf(System.currentTimeMillis());
start = JVM.monotonicTimeMillis();
FileConnection file = (FileConnection)Connector.open(privateDir + filename);
System.out.println("Writing to file " + privateDir + filename);
file.create();
System.out.println("FileConnection.open/create time: " + (JVM.monotonicTimeMillis() - start));
start = JVM.monotonicTimeMillis();
OutputStream out = file.openOutputStream();
System.out.println("FileConnection.openOutputStream time: " + (JVM.monotonicTimeMillis() - start));
start = JVM.monotonicTimeMillis();
for (int i = 0; i < 1000; i++) {
out.write(b);
}
System.out.println("OutputStream.write time: " + (JVM.monotonicTimeMillis() - start));
start = JVM.monotonicTimeMillis();
for (int i = 0; i < 10000; i++) {
out.write(42);
}
System.out.println("OutputStream.write single byte time: " + (JVM.monotonicTimeMillis() - start));
out.close();
InputStream in = file.openInputStream();
byte[] arr = new byte[1024];
start = JVM.monotonicTimeMillis();
for (int i = 0; i < 1000; i++) {
in.read(arr, 0, 1024);
}
System.out.println("InputStream.read time: " + (JVM.monotonicTimeMillis() - start));
in.close();
in = file.openInputStream();
start = JVM.monotonicTimeMillis();
for (int i = 0; i < 10000; i++) {
in.read();
}
System.out.println("InputStream.read single byte time: " + (JVM.monotonicTimeMillis() - start));
in.close();
in = file.openInputStream();
start = JVM.monotonicTimeMillis();
for (int i = 0; i < 1000; i++) {
in.skip(1024);
}
System.out.println("InputStream.skip time: " + (JVM.monotonicTimeMillis() - start));
in.close();
file.close();
} catch (Exception e) {
System.out.println("Unexpected exception: " + e);
e.printStackTrace();
}
}
public static void main(String args[]) {
try {
SecureRandom rnd = SecureRandom.getInstance(SecureRandom.ALG_SECURE_RANDOM);
rnd.nextBytes(b, 0, 1024);
} catch (Exception e) {
System.out.println("Unexpected exception: " + e);
e.printStackTrace();
}
FileConnectionBench bench = new FileConnectionBench();
MemorySampler.sampleMemory("Memory before benchmarking FileConnection");
bench.runBenchmark();
MemorySampler.sampleMemory("Memory after benchmarking FileConnection");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// nothing to do
}
MemorySampler.sampleMemory("Memory five seconds later");
}
}