Why does Metropolis evaluate the model twice per step?

Thanks again for the response!

Those links were really helpful. I now understand why it is computed twice. Does it need to be though?
logp1 in delta_logp (pymc3/metropolis.py at c1efb7ad51e34e6bd8b292ef226a7e191adbdb82 · pymc-devs/pymc3 · GitHub) obviously needs to be computed but logp0 should still be known from the previous step, right? That would mean we perform twice as many model evaluations as we actually need.

I realize this probably does not matter for most models, but my evaluation takes around 20 to 30 seconds and I want to perform as few of these calculations as possible.