Was ist hacken?
$ 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) }