user23479: I'm using Stockfish to analyze my blunder filled games for blunders.
Let's say you send stockfish a FEN for a position and then calculate to a given depth ...
position fen the-starting-position
go depth 15

Now let's say a move has been made. I can either send stockfish the move...
position move the-move

or send it the fen that results from the new move.
position fen the-postition-after-the-move

Is Stockfish more efficient when you send it to the former?  That is, does it remember the evaluation from the starting position and use it as a starting point for analyzing the new position after you give it a 'position move ...' command?  And does it not remember the prior calculations if you just send it the next FEN in the sequences?

And a similar question.  If you tell Stockfish to analyze to a depth on a position, and then tell it to analyze to a deeper depth, does it start that second analysis from where the prior analysis stopped?
position fen the-starting-position
go depth 15
go depth 20   


user23479: EDIT
I will leave the below incorrect answer in case others make the same mistake I did.  When using position moves (not position move), you have to provide the entire move list, not just the most recent move.

To try to answer the first part of my question, I analyze a game where first time through I used position move the-move and the second time through I used 'position fen the-fen-after-the-move'.
Here is what I got, through depth of 4...
||Move #55 : 1. e3 d6 2. Qf3 Nd7 3. Bc4 e6 4. d4 d5 5. Bd3 Ngf6 6. c4 Bb4+ 7. Bd2 Bxd2+ 8. Nxd2 dxc4 9. Nxc4 O-O 10. Ne5 Nxe5 11. dxe5 Nd5 12. Qe4 g6 13. Nf3 c6 14. O-O b5 15. Rad1 a5 16. a3 Ba6 17. Nd4 c5 18. Nc6 Qc7 19. Qxd5 exd5 20. Nd4 Qxe5 21. Nf3 Qh5 22. h3 Bb7 23. Be2 c4 24. Nd4 Rad8 25. Bf3 Rfe8 26. Bxh5 c3 27. f4 cxb2 28. Rb1
Sending to Stockfish: position move d1b1
Sending to Stockfish: go depth 12
info depth 1 seldepth 1 multipv 1 score cp 56 nodes 63 nps 63000 time 1 pv g1f3
info depth 1 seldepth 1 multipv 2 score cp 44 nodes 63 nps 63000 time 1 pv d2d4
info depth 1 seldepth 1 multipv 3 score cp 36 nodes 63 nps 63000 time 1 pv e2e4
info depth 2 seldepth 2 multipv 1 score cp 56 nodes 130 nps 130000 time 1 pv g1f3 g8f6
info depth 2 seldepth 2 multipv 2 score cp 44 nodes 130 nps 130000 time 1 pv d2d4 d7d5
info depth 2 seldepth 2 multipv 3 score cp 36 nodes 130 nps 130000 time 1 pv e2e4 e7e5
info depth 3 seldepth 3 multipv 1 score cp 56 nodes 205 nps 205000 time 1 pv g1f3 g8f6 e2e3
info depth 3 seldepth 3 multipv 2 score cp 44 nodes 205 nps 205000 time 1 pv d2d4 d7d5 e2e3
info depth 3 seldepth 3 multipv 3 score cp 36 nodes 205 nps 205000 time 1 pv e2e4 e7e5 b1c3
info depth 4 seldepth 4 multipv 1 score cp 56 nodes 291 nps 291000 time 1 pv g1f3 g8f6 e2e3 e7e6
info depth 4 seldepth 4 multipv 2 score cp 44 nodes 291 nps 291000 time 1 pv d2d4 d7d5 e2e3 e7e6
info depth 4 seldepth 4 multipv 3 score cp 36 nodes 291 nps 291000 time 1 pv e2e4 e7e5 b1c3 b8c6


||Move #55 : 1. e3 d6 2. Qf3 Nd7 3. Bc4 e6 4. d4 d5 5. Bd3 Ngf6 6. c4 Bb4+ 7. Bd2 Bxd2+ 8. Nxd2 dxc4 9. Nxc4 O-O 10. Ne5 Nxe5 11. dxe5 Nd5 12. Qe4 g6 13. Nf3 c6 14. O-O b5 15. Rad1 a5 16. a3 Ba6 17. Nd4 c5 18. Nc6 Qc7 19. Qxd5 exd5 20. Nd4 Qxe5 21. Nf3 Qh5 22. h3 Bb7 23. Be2 c4 24. Nd4 Rad8 25. Bf3 Rfe8 26. Bxh5 c3 27. f4 cxb2 28. Rb1
Sending to Stockfish: position fen 3rr1k1/1b3p1p/6p1/pp1p3B/3N1P2/P3P2P/1p4P1/1R3RK1 b - - 1 28
Sending to Stockfish: go depth 12
info depth 1 seldepth 1 multipv 1 score cp 44 nodes 122 nps 122000 time 1 pv g6h5 b1b2
info depth 1 seldepth 1 multipv 2 score cp 40 nodes 122 nps 122000 time 1 pv e8e3 b1b2 g6h5 b2b5 b7a6
info depth 1 seldepth 1 multipv 3 score cp 9 nodes 122 nps 122000 time 1 pv b7a6
info depth 2 seldepth 2 multipv 1 score cp 44 nodes 234 nps 234000 time 1 pv g6h5 b1b2
info depth 2 seldepth 2 multipv 2 score cp 40 nodes 234 nps 234000 time 1 pv e8e3 b1b2 g6h5
info depth 2 seldepth 2 multipv 3 score cp 13 nodes 234 nps 234000 time 1 pv b7a6 d4c6
info depth 3 seldepth 3 multipv 1 score cp 48 nodes 444 nps 444000 time 1 pv g6h5 b1b2 b7a6
info depth 3 seldepth 3 multipv 2 score cp 40 nodes 444 nps 444000 time 1 pv e8e3 b1b2 g6h5
info depth 3 seldepth 3 multipv 3 score cp -56 nodes 444 nps 444000 time 1 pv b5b4 b1b2 g6h5
info depth 4 seldepth 4 multipv 1 score cp 44 nodes 691 nps 345500 time 2 pv g6h5 b1b2 b7a6 d4c6
info depth 4 seldepth 4 multipv 2 score cp 5 nodes 691 nps 345500 time 2 pv e8e3 h5f3 e3d3 b1b2
info depth 4 seldepth 4 multipv 3 score cp -56 nodes 691 nps 345500 time 2 pv b5b4 b1b2 g6h5 g1f2

Somewhat surprising to me it looks like when you send stockfish a move, the engine examines fewer nodes and the nps (nodes per second?) is less as well.  The centipawn eval is different too indicating that (probably) 'position move ...' already has some knowledge of the position.  BTW, I'm using this javascript WASM implementation of stockfish  https://github.com/niklasf/stockfish.wasm

user3122: UCI protocol
Based on your answer, it looks like there is a typo and a misunderstanding.
The typo: It should be position ... moves, not position ... move.
The misunderstanding: The UCI protocol is stateless in the sense that you need to give the entire list of moves leading to the intended position every time, or the position itself.
Examples:

position startpos moves d1b1 is invalid, because d1b1 is not a legal move in the starting position.

position fen 3rr1k1/1b3p1p/6p1/pp1p3B/3N1P2/P3P2P/1p4P1/1R3RK1 b - - 1 28 is valid

position startpos moves e2e3 d7d6 d1f3 b8d7 f1c4 e7e6 d2d4 d6d5 c4d3 g8f6 c2c4 f8b4 c1d2 b4d2 b1d2 d5c4 d2c4 e8g8 c4e5 d7e5 d4e5 f6d5 f3e4 g7g6 g1f3 c7c6 e1g1 b7b5 a1d1 a7a5 a2a3 c8a6 f3d4 c6c5 d4c6 d8c7 e4d5 e6d5 c6d4 c7e5 d4f3 e5h5 h2h3 a6b7 d3e2 c5c4 f3d4 a8d8 e2f3 f8e8 f3h5 c4c3 f2f4 c3b2 d1b1 is valid and sets up the same position

position startpos moves e2e3 followed by position startpos moves d7d6 is invalid, because d7d6 is not a legal move in the starting position.


Differences between fen and moves
It's up to the engine if it can do something useful with the list of moves. For Stockfish, it's almost the same as not having the list, with no difference in efficiency. But having the list of moves informs Stockfish about possible repetitions, so it can avoid or aim for repeating an earlier position three times.

23479: <p>I'm using Stockfish to analyze my blunder filled games for blunders.</p>
<p>Let's say you send stockfish a FEN for a position and then calculate to a given depth ...</p>
<pre><code>position fen the-starting-position
go depth 15
</code></pre>
<p>Now let's say a move has been made. I can either send stockfish the move...</p>
<pre><code>position move the-move
</code></pre>
<p>or send it the fen that results from the new move.</p>
<pre><code>position fen the-postition-after-the-move
</code></pre>
<p>Is Stockfish more efficient when you send it to the former?  That is, does it remember the evaluation from the starting position and use it as a starting point for analyzing the new position after you give it a 'position move ...' command?  And does it not remember the prior calculations if you just send it the next FEN in the sequences?</p>
<hr />
<p>And a similar question.  If you tell Stockfish to analyze to a depth on a position, and then tell it to analyze to a deeper depth, does it start that second analysis from where the prior analysis stopped?</p>
<pre><code>position fen the-starting-position
go depth 15
go depth 20   
</code></pre>
 23479: <p><strong>EDIT</strong></p>
<p>I will leave the below incorrect answer in case others make the same mistake I did.  When using <code>position moves</code> (not position move), you have to provide the entire move list, not just the most recent move.</p>
<hr />
<p>To try to answer the first part of my question, I analyze a game where first time through I used <code>position move the-move</code> and the second time through I used 'position fen the-fen-after-the-move'.</p>
<p>Here is what I got, through depth of 4...</p>
<pre><code>||Move #55 : 1. e3 d6 2. Qf3 Nd7 3. Bc4 e6 4. d4 d5 5. Bd3 Ngf6 6. c4 Bb4+ 7. Bd2 Bxd2+ 8. Nxd2 dxc4 9. Nxc4 O-O 10. Ne5 Nxe5 11. dxe5 Nd5 12. Qe4 g6 13. Nf3 c6 14. O-O b5 15. Rad1 a5 16. a3 Ba6 17. Nd4 c5 18. Nc6 Qc7 19. Qxd5 exd5 20. Nd4 Qxe5 21. Nf3 Qh5 22. h3 Bb7 23. Be2 c4 24. Nd4 Rad8 25. Bf3 Rfe8 26. Bxh5 c3 27. f4 cxb2 28. Rb1
Sending to Stockfish: position move d1b1
Sending to Stockfish: go depth 12
info depth 1 seldepth 1 multipv 1 score cp 56 nodes 63 nps 63000 time 1 pv g1f3
info depth 1 seldepth 1 multipv 2 score cp 44 nodes 63 nps 63000 time 1 pv d2d4
info depth 1 seldepth 1 multipv 3 score cp 36 nodes 63 nps 63000 time 1 pv e2e4
info depth 2 seldepth 2 multipv 1 score cp 56 nodes 130 nps 130000 time 1 pv g1f3 g8f6
info depth 2 seldepth 2 multipv 2 score cp 44 nodes 130 nps 130000 time 1 pv d2d4 d7d5
info depth 2 seldepth 2 multipv 3 score cp 36 nodes 130 nps 130000 time 1 pv e2e4 e7e5
info depth 3 seldepth 3 multipv 1 score cp 56 nodes 205 nps 205000 time 1 pv g1f3 g8f6 e2e3
info depth 3 seldepth 3 multipv 2 score cp 44 nodes 205 nps 205000 time 1 pv d2d4 d7d5 e2e3
info depth 3 seldepth 3 multipv 3 score cp 36 nodes 205 nps 205000 time 1 pv e2e4 e7e5 b1c3
info depth 4 seldepth 4 multipv 1 score cp 56 nodes 291 nps 291000 time 1 pv g1f3 g8f6 e2e3 e7e6
info depth 4 seldepth 4 multipv 2 score cp 44 nodes 291 nps 291000 time 1 pv d2d4 d7d5 e2e3 e7e6
info depth 4 seldepth 4 multipv 3 score cp 36 nodes 291 nps 291000 time 1 pv e2e4 e7e5 b1c3 b8c6


||Move #55 : 1. e3 d6 2. Qf3 Nd7 3. Bc4 e6 4. d4 d5 5. Bd3 Ngf6 6. c4 Bb4+ 7. Bd2 Bxd2+ 8. Nxd2 dxc4 9. Nxc4 O-O 10. Ne5 Nxe5 11. dxe5 Nd5 12. Qe4 g6 13. Nf3 c6 14. O-O b5 15. Rad1 a5 16. a3 Ba6 17. Nd4 c5 18. Nc6 Qc7 19. Qxd5 exd5 20. Nd4 Qxe5 21. Nf3 Qh5 22. h3 Bb7 23. Be2 c4 24. Nd4 Rad8 25. Bf3 Rfe8 26. Bxh5 c3 27. f4 cxb2 28. Rb1
Sending to Stockfish: position fen 3rr1k1/1b3p1p/6p1/pp1p3B/3N1P2/P3P2P/1p4P1/1R3RK1 b - - 1 28
Sending to Stockfish: go depth 12
info depth 1 seldepth 1 multipv 1 score cp 44 nodes 122 nps 122000 time 1 pv g6h5 b1b2
info depth 1 seldepth 1 multipv 2 score cp 40 nodes 122 nps 122000 time 1 pv e8e3 b1b2 g6h5 b2b5 b7a6
info depth 1 seldepth 1 multipv 3 score cp 9 nodes 122 nps 122000 time 1 pv b7a6
info depth 2 seldepth 2 multipv 1 score cp 44 nodes 234 nps 234000 time 1 pv g6h5 b1b2
info depth 2 seldepth 2 multipv 2 score cp 40 nodes 234 nps 234000 time 1 pv e8e3 b1b2 g6h5
info depth 2 seldepth 2 multipv 3 score cp 13 nodes 234 nps 234000 time 1 pv b7a6 d4c6
info depth 3 seldepth 3 multipv 1 score cp 48 nodes 444 nps 444000 time 1 pv g6h5 b1b2 b7a6
info depth 3 seldepth 3 multipv 2 score cp 40 nodes 444 nps 444000 time 1 pv e8e3 b1b2 g6h5
info depth 3 seldepth 3 multipv 3 score cp -56 nodes 444 nps 444000 time 1 pv b5b4 b1b2 g6h5
info depth 4 seldepth 4 multipv 1 score cp 44 nodes 691 nps 345500 time 2 pv g6h5 b1b2 b7a6 d4c6
info depth 4 seldepth 4 multipv 2 score cp 5 nodes 691 nps 345500 time 2 pv e8e3 h5f3 e3d3 b1b2
info depth 4 seldepth 4 multipv 3 score cp -56 nodes 691 nps 345500 time 2 pv b5b4 b1b2 g6h5 g1f2
</code></pre>
<p>Somewhat surprising to me it looks like when you send stockfish a move, the engine examines fewer nodes and the nps (nodes per second?) is less as well.  The centipawn eval is different too indicating that (probably) 'position move ...' already has some knowledge of the position.  BTW, I'm using this javascript WASM implementation of stockfish  <a href="https://github.com/niklasf/stockfish.wasm" rel="nofollow noreferrer">https://github.com/niklasf/stockfish.wasm</a></p>
 3122: <p><strong>UCI protocol</strong></p>
<p>Based on your answer, it looks like there is a typo and a misunderstanding.</p>
<p>The typo: It should be <code>position ... moves</code>, not <code>position ... move</code>.</p>
<p>The misunderstanding: The UCI protocol is stateless in the sense that you need to give the entire list of moves leading to the intended position every time, or the position itself.</p>
<p>Examples:</p>
<ul>
<li><p><code>position startpos moves d1b1</code> is invalid, because <code>d1b1</code> is not a legal move in the starting position.</p>
</li>
<li><p><code>position fen 3rr1k1/1b3p1p/6p1/pp1p3B/3N1P2/P3P2P/1p4P1/1R3RK1 b - - 1 28</code> is valid</p>
</li>
<li><p><code>position startpos moves e2e3 d7d6 d1f3 b8d7 f1c4 e7e6 d2d4 d6d5 c4d3 g8f6 c2c4 f8b4 c1d2 b4d2 b1d2 d5c4 d2c4 e8g8 c4e5 d7e5 d4e5 f6d5 f3e4 g7g6 g1f3 c7c6 e1g1 b7b5 a1d1 a7a5 a2a3 c8a6 f3d4 c6c5 d4c6 d8c7 e4d5 e6d5 c6d4 c7e5 d4f3 e5h5 h2h3 a6b7 d3e2 c5c4 f3d4 a8d8 e2f3 f8e8 f3h5 c4c3 f2f4 c3b2 d1b1</code> is valid and sets up the same position</p>
</li>
<li><p><code>position startpos moves e2e3</code> followed by <code>position startpos moves d7d6</code> is invalid, because <code>d7d6</code> is not a legal move in the starting position.</p>
</li>
</ul>
<p><strong>Differences between fen and moves</strong></p>
<p>It's up to the engine if it can do something useful with the list of moves. For Stockfish, it's almost the same as not having the list, with no difference in efficiency. But having the list of moves informs Stockfish about possible repetitions, so it can avoid or aim for repeating an earlier position three times.</p>
