Squeezing out more performance

Vitek and I talked about an idea he had to make the exhaustive search in MBA a bit more efficient. Basically, it involves the program being able to remember things it’s tried before, and not bother trying them again if it knows it won’t work. As a result, you can eliminate consideration of lots of sets of constraints right away. While each one wouldn’t have taken long to evaluate, being able to skip over dozens of a time should still be a win.

Actually, the idea was pretty similar to one I had been kicking around before leaving for vacation two weeks ago, but the approach I had had in mind wouldn’t have worked. Vitek’s is the same basic idea, but done in a way that shrinks the search space too aggressively. Early tests suggest it could produce a noticeable speedup in execution time, which is always good, and should work especially well for the nastier data sets.

I don’t know if I ever mentioned here that I made a glorious hack on top of Doug Lea’s FJTask framework to allow it to be used to move tasks between computers instead of just between threads. Anyway, there’s a new guy in the lab, and he’s working on adapting that glorious hack into a more generalized remote computing system. That’s pretty cool. Unfortunately right now he’s stuck with backporting the current MBA code to Java 1.3 so that it’ll run on his customized VM. Doing so turns up all sorts of differences between Java 1.3 and Java 1.4; for example, did you know that Double.parseDouble("NaN") throws an exception in 1.3, but does just what you expect in 1.4?

Comments are closed.