Skip to content

Instantly share code, notes, and snippets.

@Igosuki
Created February 9, 2013 17:00
Show Gist options
  • Save Igosuki/4746046 to your computer and use it in GitHub Desktop.
Save Igosuki/4746046 to your computer and use it in GitHub Desktop.
Java & Groovy bytecode perf
@Test
public void performances_are_as_expected() {
long start, end;
def varsMap = {
start = System.currentTimeMillis()
def map =["${T11Tag.COUNTRY}": null, "${T11Tag.DATE_GZT}" : null, "${T11Tag.DOCNUM}" : null, "${T11Tag.F_OR_P}": null,
"${T11Tag.IPR_TYPE}": null, "${T11Tag.KIND}": null, "${T11Tag.LEC1}": null, "${T11Tag.LEC2}": null, "${T11Tag.STATUS}": null];
for (int i = 0; i < 100000; i++) {
for(T11Tag tag : T11Tag.values()) {
map.put("${tag}", "0")
}
}
end = System.currentTimeMillis()
end-start
}
def perfVarsmap = varsMap()
def groovyVars = {
start = System.currentTimeMillis()
def country, dategzt, docnum, forp, iprt, kind, lec1, lec2, status
for (int i = 0; i < 100000; i++) {
country = "${i*System.currentTimeMillis()}"
dategzt = "${i*System.currentTimeMillis()}"
docnum = "${i*System.currentTimeMillis()}"
forp = "${i*System.currentTimeMillis()}"
iprt = "${i*System.currentTimeMillis()}"
kind = "${i*System.currentTimeMillis()}"
lec1 = "${i*System.currentTimeMillis()}"
lec2 = "${i*System.currentTimeMillis()}"
status = "${i*System.currentTimeMillis()}"
country = null
dategzt = null
docnum = null
forp = null
iprt = null
kind = null
lec1 = null
lec2 = null
status = null
}
end = System.currentTimeMillis()
end-start
}
def perfVarsgroovy = groovyVars()
def groovyVarsReassign = {
start = System.currentTimeMillis()
for (int i = 0; i < 100000; i++) {
def country = null, dategzt = null, docnum = null, forp = null, iprt = null, kind = null, lec1 = null, lec2 = null, status = null
country = "${i*System.currentTimeMillis()}"
dategzt = "${i*System.currentTimeMillis()}"
docnum = "${i*System.currentTimeMillis()}"
forp = "${i*System.currentTimeMillis()}"
iprt = "${i*System.currentTimeMillis()}"
kind = "${i*System.currentTimeMillis()}"
lec1 = "${i*System.currentTimeMillis()}"
lec2 = "${i*System.currentTimeMillis()}"
status = "${i*System.currentTimeMillis()}"
}
end = System.currentTimeMillis()
end-start
}
def perfVarsreassigngroovy = groovyVarsReassign()
def varsJava = {
start = System.nanoTime();
String country, dategzt, docnum, forp, iprt, kind, lec1, lec2, status;
for (int i = 0; i < 100000; i++) {
country = String.valueOf(i*System.nanoTime());
dategzt = String.valueOf(i*System.nanoTime());
docnum = String.valueOf(i*System.nanoTime());
forp = String.valueOf(i*System.nanoTime());
iprt = String.valueOf(i*System.nanoTime());
kind = String.valueOf(i*System.nanoTime());
lec1 = String.valueOf(i*System.nanoTime());
lec2 = String.valueOf(i*System.nanoTime());
status = String.valueOf(i*System.nanoTime());
country = null;
dategzt = null;
docnum = null;
forp = null;
iprt = null;
kind = null;
lec1 = null;
lec2 = null;
status = null;
}
end = System.nanoTime();
end-start
}
def perfVarsJava = varsJava()
def varsReassignJava = {
start = System.nanoTime();
for (int i = 0; i < 100000; i++) {
String country = null, dategzt = null, docnum = null, forp = null, iprt = null, kind = null, lec1 = null, lec2 = null, status = null;
country = String.valueOf(i*System.nanoTime());
dategzt = String.valueOf(i*System.nanoTime());
docnum = String.valueOf(i*System.nanoTime());
forp = String.valueOf(i*System.nanoTime());
iprt = String.valueOf(i*System.nanoTime());
kind = String.valueOf(i*System.nanoTime());
lec1 = String.valueOf(i*System.nanoTime());
lec2 = String.valueOf(i*System.nanoTime());
status = String.valueOf(i*System.nanoTime());
}
end = System.nanoTime();
end - start
}
def perfVarsReassignJava = varsReassignJava()
def varsArray = {
start = System.currentTimeMillis()
def array = []
for (int i = 0; i < 100000; i++) {
for(int j = 0; j < 10; j++) {
array[j] = "0"
}
array.each { v ->
v = null
}
}
end = System.currentTimeMillis()
end - start
}
def perfVarsArray = varsArray()
Assert.assertTrue(perfVarsreassigngroovy < perfVarsgroovy)
Assert.assertTrue(perfVarsgroovy < perfVarsArray)
Assert.assertTrue(perfVarsArray < perfVarsmap)
Assert.assertTrue(perfVarsmap < perfVarsJava)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment