Is it possible to change the judging system to compensate for slow compilation / runtime startup? Runtime startup should be a roughly constant amount of time and could be subtracted from the overall time.
For example, I spent some time on one of the problems which ran successfully in under 10ms on my laptop. Note that the code ran successfully. For example:
object Main extends App {
val start = System.currentTimeMillis
// problem code here
val elapsed = System.currentTImeMillis - start
println(s"Elapsed: $elapsed ms")
}
This printed "Elapsed: 8 ms" most of the time.
The time limit on the problem is 1.237s. I tried a few times but it kept failing with TLE. Finally I rewrote it in C and Java. The C version took 0.07s and the Java version took 1.03s, according to SPOJ. I'm sure the JVM startup was most of that 1.03s.
It's really too bad that problems with a short time limit are excluding languages like Scala. What's the point of building a cool multi-language judging system if common languages are excluded? I think that the runtime startup ought to be subtracted from the overall time. In the meantime, short time limit problems should list Scala (and maybe Java) as excluded.