зеркало из https://github.com/mozilla/pluotsorbet.git
193 строки
4.1 KiB
Java
193 строки
4.1 KiB
Java
|
import java.lang.Object;
|
||
|
import java.lang.System;
|
||
|
import java.util.Hashtable;
|
||
|
import java.util.Vector;
|
||
|
import java.io.ByteArrayOutputStream;
|
||
|
import org.mozilla.internal.Sys;
|
||
|
import com.sun.cldchi.jvm.JVM;
|
||
|
|
||
|
class JITBenchmark {
|
||
|
|
||
|
static class A {}
|
||
|
static class B extends A {}
|
||
|
|
||
|
public static int size = 0;
|
||
|
public static long start = 0;
|
||
|
|
||
|
public static void createObjectArrays() {
|
||
|
Object array = null;
|
||
|
int count = size / 8;
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
array = new Object[64];
|
||
|
array = new Object[128];
|
||
|
array = new Object[256];
|
||
|
array = new Object[512];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void createPrimitiveArrays() {
|
||
|
Object array = null;
|
||
|
int count = size / 8;
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
array = new int[64];
|
||
|
array = new int[128];
|
||
|
array = new int[256];
|
||
|
array = new int[512];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
public static void writeByteArrayOutputStream() {
|
||
|
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||
|
int count = size * 16;
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
stream.write(i);
|
||
|
stream.write(i);
|
||
|
stream.write(i);
|
||
|
stream.write(i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void concatStrings() {
|
||
|
String s = "";
|
||
|
int count = size / 16;
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
s += "X";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void getBytes() {
|
||
|
String s = "getBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytesgetBytes";
|
||
|
int count = size / 4;
|
||
|
byte [] bytes = null;
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
bytes = s.getBytes();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void synch() {
|
||
|
int count = size * 32;
|
||
|
byte [] bytes = null;
|
||
|
Object o = new Object();
|
||
|
int sum = 0;
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
synchronized (o) {
|
||
|
sum++;
|
||
|
}
|
||
|
synchronized (o) {
|
||
|
sum++;
|
||
|
}
|
||
|
synchronized (o) {
|
||
|
sum++;
|
||
|
}
|
||
|
synchronized (o) {
|
||
|
sum++;
|
||
|
}
|
||
|
synchronized (o) {
|
||
|
sum++;
|
||
|
}
|
||
|
synchronized (o) {
|
||
|
sum++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void hashtable() {
|
||
|
int count = size * 2;
|
||
|
Hashtable hash = new Hashtable();
|
||
|
Object o = new Object();
|
||
|
String [] names = {
|
||
|
"hello", "world", "hello1", "world2", "hello3", "world4", "hello5", "world6"
|
||
|
};
|
||
|
for (int i = 0; i < count; i++) {
|
||
|
String name = names[i % names.length];
|
||
|
hash.put(name, o);
|
||
|
hash.get(name);
|
||
|
hash.put(name, o);
|
||
|
hash.get(name);
|
||
|
hash.put(name, o);
|
||
|
hash.get(name);
|
||
|
hash.put(name, o);
|
||
|
hash.get(name);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void arrayTypeCheck() {
|
||
|
A [] array = new A [1024];
|
||
|
A a = new A();
|
||
|
B b = new B();
|
||
|
int count = size * 3;
|
||
|
for (int i = 0; i < count - 1; i++) {
|
||
|
array[i % 1024] = a;
|
||
|
array[i % 1024] = b;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void begin() {
|
||
|
System.gc();
|
||
|
start = JVM.monotonicTimeMillis();
|
||
|
}
|
||
|
|
||
|
public static void finish(String name) {
|
||
|
System.out.println(name + ": " + (JVM.monotonicTimeMillis() - start));
|
||
|
}
|
||
|
|
||
|
public static void main(String[] args) {
|
||
|
|
||
|
// Sys.eval("J2ME.emitCheckArrayStore = false;");
|
||
|
// Sys.eval("J2ME.emitCheckArrayBounds = false;");
|
||
|
|
||
|
size = 1024;
|
||
|
|
||
|
begin();
|
||
|
start = JVM.monotonicTimeMillis();
|
||
|
createObjectArrays();
|
||
|
createPrimitiveArrays();
|
||
|
writeByteArrayOutputStream();
|
||
|
concatStrings();
|
||
|
getBytes();
|
||
|
synch();
|
||
|
hashtable();
|
||
|
arrayTypeCheck();
|
||
|
finish("startup");
|
||
|
|
||
|
size = 1024 * 256;
|
||
|
|
||
|
long start = JVM.monotonicTimeMillis();
|
||
|
begin();
|
||
|
createObjectArrays();
|
||
|
finish("createObjectArrays");
|
||
|
|
||
|
begin();
|
||
|
createPrimitiveArrays();
|
||
|
finish("createPrimitiveArrays");
|
||
|
|
||
|
begin();
|
||
|
writeByteArrayOutputStream();
|
||
|
finish("writeByteArrayOutputStream");
|
||
|
|
||
|
begin();
|
||
|
concatStrings();
|
||
|
finish("concatStrings");
|
||
|
|
||
|
begin();
|
||
|
getBytes();
|
||
|
finish("getBytes");
|
||
|
|
||
|
begin();
|
||
|
synch();
|
||
|
finish("synchronize");
|
||
|
|
||
|
begin();
|
||
|
hashtable();
|
||
|
finish("hashtable");
|
||
|
|
||
|
begin();
|
||
|
arrayTypeCheck();
|
||
|
finish("arrayTypeCheck");
|
||
|
|
||
|
System.out.println();
|
||
|
System.out.println("Total: " + (JVM.monotonicTimeMillis() - start));
|
||
|
}
|
||
|
}
|