Add pgn.BaseVisitor.begin_parse_san()
method
#984
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a new
pgn.BaseVisitor
method:begin_parse_san()
.This is called when the parser encounters a SAN, but before the very expensive step of calling
board.parse_san()
on the SAN (which entails generating all the possible legal moves).If the
begin_parse_san()
method returnsSKIP
, parsing of the SAN is skipped.There are a couple of potential use-cases:
As parsing the moves is by far the most time-consuming part of parsing a PGN, skipping any moves can result in huge time-savings.
On a real-world codebase that reads in PGNs with variations specified for most moves (and does a lot of computations afterwards), I'm seeing around a 20% speedup in overall program runtime, entirely from skipping parsing all but the first move of each variation.