mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
# TODO
|
|
|
|
* Configuration, cli
|
|
* Tests
|
|
* extract_response_peers
|
|
* Cleaner code
|
|
* Stack-allocated vector?
|
|
* Benchmarks
|
|
* num_rounds command line argument
|
|
* Send in connect reponse ids to other functions as integration test
|
|
* Save last results, check if difference is significant?
|
|
* ProgressBar: `[{elapsed_precise}]` and eta_precise?
|
|
* Test server over udp socket instead?
|
|
* Run multiple threads to test performance when contested?
|
|
* Iterate over whole returned buffer and run e.g. xor on it (.iter().fold())
|
|
* Generic bench function since current functions are almost identical
|
|
* State is now accumulated over runs. Is this good?
|
|
* Performance
|
|
* cpu-target=native good?
|
|
* mialloc good?
|
|
* TorrentMap: mutable access only to insert peer, then drop reference
|
|
and get read-only access to gather peers. This could speed up
|
|
multi-threaded performance a lot
|
|
* Use less bytes from PeerId for hashing? Would need to implement
|
|
"faulty" PartialEq too (on PeerMapKey, which would be OK)
|
|
* bittorrent_udp
|
|
* ParseError enum maybe, with `Option<TransactionId>`
|
|
* Avoid heap allocation in general if it can be avoided?
|
|
* Optimize bytes to scrape request: Vec::with_capacity or other solution (SmallVec?)
|
|
* quickcheck tests for conversions
|
|
* other unit tests?
|
|
|
|
## Don't do
|
|
|
|
### aquatic
|
|
|
|
* Other HashMap hashers (such as SeaHash): seemingly not worthwhile (might be
|
|
with AVX though)
|
|
* `sendmmsg`: can't send to multiple socket addresses, so doesn't help
|
|
* Config behind Arc in state: it is likely better to be able to pass it around
|
|
without state
|
|
|
|
### bittorrent_udp
|
|
|
|
* Use `bytes` crate for bittorrent_udp: seems to worsen performance somewhat
|
|
* Zerocopy (https://docs.rs/zerocopy/0.3.0/zerocopy/index.html) for requests
|
|
and responses? Doesn't work on Vec etc
|
|
* New array buffer each time in response_to_bytes: doesn't help performance
|