I do it at the end of each player’s action, including the dealer. It looks like this:
Dealer deals out cards. (Peeks or offers insurance if applicable)
Player 1 takes all their actions (hit/stand/split/double)
Player 2 takes all actions
So on for each player.
Dealer reveals his down card, take his hits as applicable
Rinse and Repeat.
As for most efficient, idk. I’d just say whatever works the most accurately for you. Obviously the more often you can update it, the more accurate, but the more difficult