Weiqi,
Cantera uses the Sundials CVODES solver for the sensitivity equations, using the “staggered corrector” approach described in Section 2.6.1 of the CVODES User Documentation.
I have also noticed that the solver performance degrades quite significantly when calculating sensitivities with respect to many rate constants, almost to the point where it’s no faster than the brute force approach, but it’s not something I’ve had a chance to dig into. My suspicion is that it comes from relying on CVODES to calculate the matrix of derivatives with respect to the sensitivity parameters, , which I think ends up happening by finite difference, requiring at each timestep a number of additional residual evaluations equal to the number of sensitivity parameters. CVODES provides methods for allowing user-specified routines that do this calculation more efficiently, but Cantera does not currently make use of these.
Regards,
Ray

Mathias Lemke's approach is fantastic because it represent a point of inverse function/solution in functional form. Usually, Riesz representation theorem of Hilbert space only guarantees that linear bounded functional can be represented as inner product form using elements in the same Hilbert space. It is really difficult to understand how an inverse function is expressed in that semi-norm as a functional.
Best regards,
Di