Does a node validates a transaction that comes with a block if it's already in its mempool? Except for checking for double spends, if there's a transaction in a block that's already in the node's mempool, it can theoretically skip its validation. Does it actually happen, or the nodes validate each transaction twice?
The most expensive part of checking a transaction, ECDSA validation, is cached.