Was ist hacken?

hello world
$ time ruby r.rb 1
size: 6553600, step: 1
done: 3

real	0m2.610s
user	0m2.570s
sys	0m0.036s
$
$ time ruby r.rb 16
size: 6553600, step: 16
done: 1

real	0m0.235s
user	0m0.204s
sys	0m0.027s
$
$ time java j 1
size: 6553600, step: 1
done: 3

real	0m0.265s
user	0m0.333s
sys	0m0.063s
$
$ time java j 16
size: 6553600, step: 16
done: 1

real	0m0.254s
user	0m0.313s
sys	0m0.066s
$
$ time scala s 1
size: 6553600, step: 1
done: 3

real	0m0.789s
user	0m0.985s
sys	0m0.136s
$
$ time scala s 16
size: 6553600, step: 16
done: 1

real	0m0.783s
user	0m0.966s
sys	0m0.140s
$
$ cat r.rb 
step = ARGV[0].to_i
a = Array.new(64*1024*100, 1)
printf("size: %d, step: %d\n", a.size, step)
(0..a.size-1).step(step) {|i| a[i] *= 3 }
printf("done: %d\n", a.last)

$ cat j.java 
public class j {
  public static void main(String[] args) {
    final int step = Integer.parseInt(args[0]);
    final int[] a = new int[64 * 1024 * 100];
    java.util.Arrays.fill(a, 1);
    System.out.printf("size: %d, step: %d\n", a.length, step);
    for (int i = 0; i < a.length; i+=step) a[i] *= 3;
    System.out.printf("done: %d\n", a[a.length-1]);
  }
}

$ cat s.scala 
object s extends App {
  val step = args(0).toInt
  val a = Array.fill(64 * 1024* 100)(1)
  printf("size: %d, step: %d\n", a.size, step)
  for(i <- 0 until a.size by step) a(i) *= 3
  printf("done: %d\n", a.last)
}