I doubt if your speed problems are solely due to your dispatch method. Obviously, neater dispatching would help with your readability etc., but I would be surprised if a bunch of 'if' statements were slowing things down dramatically, unless you were doing complicated comparisons with every statement. I suspect that there may be other areas that are taking their merry time - get those Benchmark modules out :)