Incremental directory reading#821
Draft
patricoferris wants to merge 2 commits intoocaml-multicore:mainfrom
Draft
Incremental directory reading#821patricoferris wants to merge 2 commits intoocaml-multicore:mainfrom
patricoferris wants to merge 2 commits intoocaml-multicore:mainfrom
Conversation
Contributor
|
I like this a lot, but I'm just wondering about extending it to cover error handling and traversal strategies, as Bos does: https://erratique.ch/software/bos/doc/Bos/OS/Path/index.html#fold With these optional args, you can control which files to skip and what to do with errors mid-traversal. |
Collaborator
Author
|
Thanks @avsm ! Note that the current implementation does not descend into directories (see the recursive call to |
Contributor
|
Got it! Your approach makes more sense to me. We can build a recursive descender over this interface in the future. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
When first providing
readdirwe shelved an incremental version. This PR starts the ball rolling on adding support for something likewith_dir_entries. Opening early to get some feedback on how it should look, shouldEio.Path.walkwalk directory tree recursively or just a single directory, leaving it to the user to descend should they want to. We should perhaps have atype entrytoo.I wrote a small benchmark:
It is far from perfect and we should take into account FS caching, but on my machine I'm getting the following.
For Eio_linux: 1.46s to 110ms
For Eio_posix: 2.02s to 1.58s