for i in [0...10]
doSomething()
is slower than for i in [0...10] by 1
doSomething()
because of the way it is compiled, so we always include the `by 1` as an optimization.Another one is that if you have a function and the last thing in that function is a loop of some kind, CoffeeScript will try to return an array from that function collecting the results of the loop. So we explicitly put a return statement at the end of the function to avoid this and the performance penalties.
There are probably a few more to be careful of, but overall performance characteristics are similar to JS. I'm sure Jens has some thoughts too, but overall I think it was a positive experience.