mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
2 KiB
2 KiB
TODO
- Benchmarks
- 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
- Show percentile stats for peers per torrent
- Configuration, cli
- Tests of aquatic
- bittorrent_udp
- quickcheck request byte conversion
- other test cases
- Check if announce response to bytes code changed caused slowdown
- thiserror errors instead of InvalidRequest
Not important
- 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?
- Performance
- cpu-target=native good?
- mialloc good?
- 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?
- request from bytes for scrape: use arrayvec with some max size for torrents? With Vec, allocation takes quite a bit of CPU time
- Optimize bytes to scrape request: Vec::with_capacity or other solution (SmallVec?)
- ParseError enum maybe, with
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
bytescrate 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