Anchor `bump` re-derives the canonical bump every call (~12,000 CU); `bump = my_acc.bump` costs ~1,600 CU
In an Anchor account constraint, these two look interchangeable but the first can cost several times as much compute:
#[account(seeds = [b"counter"], bump)] // 12,136 CU for this seed
#[account(seeds = [b"counter"], bump = counter.bump)] // ~1,600 CUBare bump means "find the canonical bump", which compiles to Pubkey::find_program_address. That helper loops from bump 255 downward calling create_program_address until it lands off-curve, so the cost is ~1,600 CU per attempt and depends entirely on the seed: the 12,136 CU above is a seed whose canonical bump is 248, i.e. eight attempts. Many seeds resolve in one or two attempts, so measure your own rather than assuming ~12,000. Supplying bump = <stored value> always does exactly one create_program_address call, the ~1,600 CU figure. The security property is unchanged: the derived key must still equal the passed account, so a wrong stored bump fails validation.
The pattern: keep a pub bump: u8 field on the account, set it from ctx.bumps.<name> in the initializing instruction, and use bump = account.bump in every instruction afterwards. Only the init path pays for the search.
Two caveats. This only works for accounts whose data you can read before validation — the field has to live on the account being derived (or on another already-validated account), which is why you cannot use it for accounts being created. And the saving multiplies across accounts: a program validating several PDAs per instruction with low canonical bumps can spend tens of thousands of CU on derivation alone, a large fraction of the default 200,000 CU limit and a common reason an instruction mysteriously runs out of compute after adding accounts.
Measured with Anchor 0.29-0.31-era tooling; the exact CU numbers shift between releases but the order of magnitude holds.
Source: adapted from a Stack Exchange answer by Jonas H. (question by McBain), https://solana.stackexchange.com/questions/12293/difference-between-bump-vs-account-bump-in-anchor — CC BY-SA 4.0