You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
Both of these are single-threaded operations. This is why decompressed writing is super slow. Yeah, I know, amateur hour.
Describe the solution you'd like
We will split writer and verifier into multiple reusable threads that communicate to each other likely via mpsc::channel<Bytes>() or mpsc::channel<Arc<[u8]>>():
File reading thread
Decompressing thread
Fanout thread (take a stream of bytes and spread it out to N sinks, to support Multi-disk UI #64)
Why mpsc::channel<Bytes>() or mpsc::channel<Arc<[u8]>>() instead of some exotic datastructure? Because it's easy to work with. Plus, disk is probably going to be the limiting factor, not atomic reference counts.
I would like to optimize my pipelines later in Exotic Ways. However, we shouldn't do this until we have good benchmarking (see #238)
Is your feature request related to a problem? Please describe.
Both of these are single-threaded operations. This is why decompressed writing is super slow. Yeah, I know, amateur hour.
Describe the solution you'd like
We will split writer and verifier into multiple reusable threads that communicate to each other likely via
mpsc::channel<Bytes>()ormpsc::channel<Arc<[u8]>>():After this, the logic for spawning writer and verifier tasks will just be wiring.
This can be done simultaneously with #234.
Alternatives
Why
mpsc::channel<Bytes>()ormpsc::channel<Arc<[u8]>>()instead of some exotic datastructure? Because it's easy to work with. Plus, disk is probably going to be the limiting factor, not atomic reference counts.I would like to optimize my pipelines later in Exotic Ways. However, we shouldn't do this until we have good benchmarking (see #238)