aquatic/TODO.md
Joakim Frostegård 9705d1822e Update TODO
2020-04-09 17:58:09 +02:00

49 lines
1.9 KiB
Markdown

# 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 and bittorrent_udp (quickcheck, test cases)
## 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?)
# 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