-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: Async #354
Comments
I am working on that in a fork here: The goal is to eventually merge it here as a pull request/branch in one way or another too. But there are lots of breaking changes and changes to implementation interfaces, so it requires some work to migrate existing implementations to it. The performance improvements are so big, I really think it is worth the breaking changes though. We could probably provide some kind of compatibility layer to make migration easier too. |
But there is really not anything that needs to be changed to support async as I see it. There should be no issues with calling async code from file system implementation routines. I have done that in lots of implementations without any issues. |
@LTRData I totally approve what you said #354 (comment) Feel free to make the change when you feel comfortable. I agree that keeping the compatibility would be nice. |
@LTRData Do you have any performance benchmarks for the changes? 🙂 |
The benchmarks were a bit complicated to make, because they needed two applications. One that made file requests and one Dokan implementation that was monitored by the benchmark. I am thinking of recreating it in a way that I could share more easily. |
@LTRData was there any change in practical performance though? As in time to copy. |
Not that much, really. It gets a bit more responsive when opening and working with files on Dokan file systems. But the most notable performance boost come from the lower memory and CPU pressure in scenarios where that is critical. For example, I am working on an application that is used on VDI servers with lots of simultaneous user sessions where each user mounts several different Dokan file systems for accessing cloud file storage etc. There can be hundreds of Dokan file systems on such servers and optimization in ways like this have great impact. But, please suggest more ideas for measuring performance differences! File copying is not really the most interesting thing to try for all use cases! |
As in the title - it would be nice to modernize the interface to be asynchronous, and perhaps also switch to
Memory<byte>
orSpan<byte>
for buffers.A few other performance improvements like iterative file search as mentioned by @LTRData would be welcome too.
The text was updated successfully, but these errors were encountered: