package org.mvel2.tests.perftests;
import org.mvel2.MVEL;
import org.mvel2.optimizers.dynamic.DynamicOptimizer;
import org.mvel2.util.ParseTools;
import org.mvel2.util.QuickSort;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.io.Serializable;
import static java.lang.Runtime.getRuntime;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
public class SimpleTests {
private static final double COUNT = 30000;
public static void main(String[] args) throws IOException {
PrintStream ps = System.out;
try {
for (int i = 0; i < 10000; i++) {
testQuickSortMVEL(ps);
}
}
catch (Throwable t) {
t.printStackTrace();
}
System.setOut(ps);
}
private static int tg = 0;
private static void testQuickSortMVEL(PrintStream ps) throws IOException {
double time;
time = System.currentTimeMillis();
char[] sourceFile = ParseTools.loadFromFile(new File("samples/scripts/quicksort.mvel"));
Serializable c = MVEL.compileExpression(sourceFile);
Map vars = new HashMap();
DecimalFormat dc = new DecimalFormat("#.##");
for (int a = 0; a < 10000; a++) {
vars.clear();
MVEL.executeExpression(c, vars);
}
ps.println("Result: " + (time = System.currentTimeMillis() - time));
ps.println("Rate : " + (COUNT / (time / 1000)) + " per second.");
ps.println("FreeMem: " + dc.format((double) getRuntime().freeMemory() / (1024d * 1024d)) + "MB / TotalMem: " + dc.format((double) getRuntime().totalMemory() / (1024d * 1024d)) + "MB");
ps.println("TotalGarbaged: " + DynamicOptimizer.totalRecycled);
}
private static void testQuickSortNative(PrintStream ps) {
double time;
time = System.currentTimeMillis();
for (int i = 0; i < COUNT; i++) {
QuickSort.quickSort(new int[]{50, 20, 21, 209, 10, 77, 8, 9, 55, 73, 41, 99});
}
ps.println("Result: " + (time = System.currentTimeMillis() - time));
ps.println("Rate : " + (COUNT / (time / 1000)) + " per second.");
}
}