Created
December 23, 2011 15:37
-
-
Save muhlig/1514485 to your computer and use it in GitHub Desktop.
Stupid Comparison from http://blog.efftinge.de/2011/12/groovy-scala-java-xtend-updated-stupid.html
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
#!/bin/bash | |
function run() { | |
export JAVA_VERSION=$1 | |
shift | |
export JAVA_OPTS="$*" | |
echo "JAVA_VERSION = ${JAVA_VERSION}" | |
echo "JAVA_OPTS = ${JAVA_OPTS}" | |
i=0 | |
while [[ $i -lt 10 ]]; do | |
echo -n "java : " | |
java $JAVA_OPTS Java | |
echo -n "scala : " | |
java $JAVA_OPTS -Xbootclasspath/a:/usr/local/Cellar/scala/2.9.1/libexec/lib/scala-library.jar -classpath classes Scala | |
let i++ | |
done | |
unset JAVA_OPTS | |
echo | |
} | |
run 1.6 | |
run 1.6 -Xverify:none | |
run 1.6 -Xverify:none -XX:+DoEscapeAnalysis -XX:+UseCompressedOops -Xmx256m -Xms256m | |
run 1.7 | |
run 1.7 -Xverify:none | |
run 1.7 -Xverify:none -XX:+DoEscapeAnalysis -XX:+UseCompressedOops -Xmx256m -Xms256m |
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
import java.util.List; | |
import java.util.ArrayList; | |
public class Java { | |
public static void main(String[] args) { | |
List<Object> absoluteResult = new ArrayList<Object>(/*3000000*/); | |
long before = System.nanoTime(); | |
for (int i=0; i < 1000000; i++) { | |
List<Object> result = new ArrayList<Object>(3); | |
result.add("foo"); | |
result.add( 23); | |
result.add(true); | |
for (Object y : result) { | |
absoluteResult.add(foo(y)); | |
} | |
} | |
System.out.println("Took : "+((System.nanoTime() - before) / 1e6) | |
+" ms, number of elements : "+absoluteResult.size()); | |
} | |
static String foo(Object s) { | |
if (s instanceof String) { | |
return "String"; | |
} else if (s instanceof Boolean) { | |
return "Boolean"; | |
} else if (s instanceof Integer) { | |
return "Integer"; | |
} else { | |
throw new IllegalArgumentException(); | |
} | |
} | |
} |
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
JAVA_VERSION = 1.6 | |
JAVA_OPTS = | |
java : Took : 155.822 ms, number of elements : 3000000 | |
scala : Took : 124.153ms, number of elements : 3000000 | |
java : Took : 155.336 ms, number of elements : 3000000 | |
scala : Took : 121.377ms, number of elements : 3000000 | |
java : Took : 155.748 ms, number of elements : 3000000 | |
scala : Took : 120.89ms, number of elements : 3000000 | |
java : Took : 153.623 ms, number of elements : 3000000 | |
scala : Took : 122.427ms, number of elements : 3000000 | |
java : Took : 159.664 ms, number of elements : 3000000 | |
scala : Took : 122.732ms, number of elements : 3000000 | |
java : Took : 156.592 ms, number of elements : 3000000 | |
scala : Took : 120.629ms, number of elements : 3000000 | |
java : Took : 156.144 ms, number of elements : 3000000 | |
scala : Took : 122.455ms, number of elements : 3000000 | |
java : Took : 157.552 ms, number of elements : 3000000 | |
scala : Took : 121.565ms, number of elements : 3000000 | |
java : Took : 154.017 ms, number of elements : 3000000 | |
scala : Took : 122.62ms, number of elements : 3000000 | |
java : Took : 157.406 ms, number of elements : 3000000 | |
scala : Took : 122.469ms, number of elements : 3000000 | |
JAVA_VERSION = 1.6 | |
JAVA_OPTS = -Xverify:none | |
java : Took : 155.123 ms, number of elements : 3000000 | |
scala : Took : 121.303ms, number of elements : 3000000 | |
java : Took : 154.947 ms, number of elements : 3000000 | |
scala : Took : 123.679ms, number of elements : 3000000 | |
java : Took : 156.867 ms, number of elements : 3000000 | |
scala : Took : 124.435ms, number of elements : 3000000 | |
java : Took : 154.12 ms, number of elements : 3000000 | |
scala : Took : 123.425ms, number of elements : 3000000 | |
java : Took : 152.919 ms, number of elements : 3000000 | |
scala : Took : 125.821ms, number of elements : 3000000 | |
java : Took : 155.846 ms, number of elements : 3000000 | |
scala : Took : 121.573ms, number of elements : 3000000 | |
java : Took : 153.942 ms, number of elements : 3000000 | |
scala : Took : 122.389ms, number of elements : 3000000 | |
java : Took : 152.932 ms, number of elements : 3000000 | |
scala : Took : 123.796ms, number of elements : 3000000 | |
java : Took : 159.708 ms, number of elements : 3000000 | |
scala : Took : 121.521ms, number of elements : 3000000 | |
java : Took : 152.429 ms, number of elements : 3000000 | |
scala : Took : 124.841ms, number of elements : 3000000 | |
JAVA_VERSION = 1.6 | |
JAVA_OPTS = -Xverify:none -XX:+DoEscapeAnalysis -XX:+UseCompressedOops -Xmx256m -Xms256m | |
java : Took : 144.895 ms, number of elements : 3000000 | |
scala : Took : 120.291ms, number of elements : 3000000 | |
java : Took : 147.53 ms, number of elements : 3000000 | |
scala : Took : 117.438ms, number of elements : 3000000 | |
java : Took : 141.173 ms, number of elements : 3000000 | |
scala : Took : 118.536ms, number of elements : 3000000 | |
java : Took : 144.656 ms, number of elements : 3000000 | |
scala : Took : 121.95ms, number of elements : 3000000 | |
java : Took : 145.137 ms, number of elements : 3000000 | |
scala : Took : 117.507ms, number of elements : 3000000 | |
java : Took : 143.513 ms, number of elements : 3000000 | |
scala : Took : 124.118ms, number of elements : 3000000 | |
java : Took : 143.039 ms, number of elements : 3000000 | |
scala : Took : 120.529ms, number of elements : 3000000 | |
java : Took : 143.316 ms, number of elements : 3000000 | |
scala : Took : 118.592ms, number of elements : 3000000 | |
java : Took : 142.396 ms, number of elements : 3000000 | |
scala : Took : 118.06ms, number of elements : 3000000 | |
java : Took : 143.269 ms, number of elements : 3000000 | |
scala : Took : 120.44ms, number of elements : 3000000 | |
JAVA_VERSION = 1.7 | |
JAVA_OPTS = | |
java : Took : 123.858 ms, number of elements : 3000000 | |
scala : Took : 100.752ms, number of elements : 3000000 | |
java : Took : 123.444 ms, number of elements : 3000000 | |
scala : Took : 101.915ms, number of elements : 3000000 | |
java : Took : 123.086 ms, number of elements : 3000000 | |
scala : Took : 101.427ms, number of elements : 3000000 | |
java : Took : 123.411 ms, number of elements : 3000000 | |
scala : Took : 102.995ms, number of elements : 3000000 | |
java : Took : 124.833 ms, number of elements : 3000000 | |
scala : Took : 100.345ms, number of elements : 3000000 | |
java : Took : 122.855 ms, number of elements : 3000000 | |
scala : Took : 110.342ms, number of elements : 3000000 | |
java : Took : 123.476 ms, number of elements : 3000000 | |
scala : Took : 100.746ms, number of elements : 3000000 | |
java : Took : 124.363 ms, number of elements : 3000000 | |
scala : Took : 102.314ms, number of elements : 3000000 | |
java : Took : 126.36 ms, number of elements : 3000000 | |
scala : Took : 104.125ms, number of elements : 3000000 | |
java : Took : 123.69 ms, number of elements : 3000000 | |
scala : Took : 104.076ms, number of elements : 3000000 | |
JAVA_VERSION = 1.7 | |
JAVA_OPTS = -Xverify:none | |
java : Took : 125.788 ms, number of elements : 3000000 | |
scala : Took : 102.966ms, number of elements : 3000000 | |
java : Took : 127.147 ms, number of elements : 3000000 | |
scala : Took : 105.484ms, number of elements : 3000000 | |
java : Took : 125.818 ms, number of elements : 3000000 | |
scala : Took : 101.9ms, number of elements : 3000000 | |
java : Took : 126.939 ms, number of elements : 3000000 | |
scala : Took : 102.787ms, number of elements : 3000000 | |
java : Took : 125.077 ms, number of elements : 3000000 | |
scala : Took : 100.708ms, number of elements : 3000000 | |
java : Took : 124.803 ms, number of elements : 3000000 | |
scala : Took : 101.042ms, number of elements : 3000000 | |
java : Took : 124.923 ms, number of elements : 3000000 | |
scala : Took : 102.194ms, number of elements : 3000000 | |
java : Took : 123.323 ms, number of elements : 3000000 | |
scala : Took : 102.93ms, number of elements : 3000000 | |
java : Took : 123.966 ms, number of elements : 3000000 | |
scala : Took : 100.922ms, number of elements : 3000000 | |
java : Took : 125.962 ms, number of elements : 3000000 | |
scala : Took : 102.446ms, number of elements : 3000000 | |
JAVA_VERSION = 1.7 | |
JAVA_OPTS = -Xverify:none -XX:+DoEscapeAnalysis -XX:+UseCompressedOops -Xmx256m -Xms256m | |
java : Took : 126.786 ms, number of elements : 3000000 | |
scala : Took : 96.999ms, number of elements : 3000000 | |
java : Took : 126.266 ms, number of elements : 3000000 | |
scala : Took : 97.28ms, number of elements : 3000000 | |
java : Took : 127.34 ms, number of elements : 3000000 | |
scala : Took : 96.257ms, number of elements : 3000000 | |
java : Took : 130.449 ms, number of elements : 3000000 | |
scala : Took : 97.744ms, number of elements : 3000000 | |
java : Took : 129.604 ms, number of elements : 3000000 | |
scala : Took : 97.947ms, number of elements : 3000000 | |
java : Took : 127.406 ms, number of elements : 3000000 | |
scala : Took : 97.447ms, number of elements : 3000000 | |
java : Took : 129.006 ms, number of elements : 3000000 | |
scala : Took : 98.002ms, number of elements : 3000000 | |
java : Took : 127.636 ms, number of elements : 3000000 | |
scala : Took : 100.271ms, number of elements : 3000000 | |
java : Took : 128.147 ms, number of elements : 3000000 | |
scala : Took : 96.955ms, number of elements : 3000000 | |
java : Took : 127.948 ms, number of elements : 3000000 | |
scala : Took : 99.134ms, number of elements : 3000000 |
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
import collection.mutable.ArrayBuffer | |
import annotation.tailrec | |
object Scala extends App { | |
final val absoluteResult = new ArrayBuffer[Any](/*3000000*/) | |
private [this] final def runIt(times: Int): Unit = | |
if (times > 0) { | |
append("foo" :: 23 :: true :: Nil) | |
runIt(times-1) | |
} | |
private[this] final def append(xs: List[Any]): Unit = | |
if (xs ne Nil) { | |
absoluteResult += foo(xs.head) | |
append(xs.tail) | |
} | |
private[this] final def foo(obj : Any) = obj match { | |
case _:String => "String" | |
case _:Boolean => "Boolean" | |
case _:Int => "Integer" | |
case _ => throw new IllegalArgumentException() | |
} | |
val before = System.nanoTime() | |
runIt(1000000) | |
printf("Took : %sms, number of elements : %d%n", (System.nanoTime() - before) / 1e6, absoluteResult.size) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment