Just to correct my numbers... I was drunk or something when I posted originally and divided the numbers for NsTcl.eval() by 10 rather than 10000. oops. So yeah we're talking 0.15 ms, not 150 ms. That makes a lot more sense. Rewriting nsjava to take a String returned from from the java method directly buys us about a factor of 2 speedup.