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.
This cache makes the library much faster in non-hosted environments where the disk is being access directly (e.g. UEFI). There is also a small performance improvement in hosted environments (e.g. Linux).
Example numbers (no-cache -> with-cache), running this command:
cargo xtask bench test_data/chromiumos_root.bin
Device 1 Linux: 9.28s -> 8.31s
Device 2 Linux: 1.23s -> 1.15s
Device 1 Uefi: 52.49s -> 17.78s
Device 2 Uefi: 22.33s -> 9.18s
There is a memory cost to the cache of course. Currently there's no way to tune it for memory-constrained environments; we might want to add something like that in the future if someone has a use case for it.
Currently the cache is very simple and only stores block data. In the future we might want to cache additional data, e.g. checksum verification.
See docstrings in src/block_cache.rs for implementation details of the cache.
#467