Created
February 9, 2013 17:00
-
-
Save Igosuki/4746046 to your computer and use it in GitHub Desktop.
Java & Groovy bytecode perf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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