Skip to content

Instantly share code, notes, and snippets.

@muhlig
Created December 23, 2011 15:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save muhlig/1514485 to your computer and use it in GitHub Desktop.
Save muhlig/1514485 to your computer and use it in GitHub Desktop.
#!/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
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();
}
}
}
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
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