Hi Dave,
What size is your reaction mechanism? I would guess if you're already seeing that the rate calculations are taking up most of the time and the preconditioned solver isn't improving things much, then this is a fairy small mechanism.
There is currently no way to use the analytical Jacobian with CVODES, outside the preconditioned solver. That's probably something that would be worth looking into after the these Jacobians are complete -- they are currently missing some terms related to interactions between reactors, which is the subject of PR #1634.
I think implementing approximations for the reaction rate functions would be a useful performance enhancement. A while back, I had implemented a version using linear interpolation in Ember and gotten pretty substantial speedups. And improving these calculations only becomes more effective as we reduce the linear algebra overhead by using the preconditioned solver. Other aspects to this are making sure that these calculations are vectorized where possible and eliminating redundant/unnecessary rate calculations. I had started experimenting with some of these ideas in PR #1217, but that's now somewhat out of date.
Regards,
Ray