Performance depends on what you are transferring first and foremost. Today there is no perfect tool covering all situations.
I tend to use rclone (native or hosted) for uploading most of the time.
1000x <64MB file upload. If you want to upload 1000 small files very fast we have two options. The best option would be rclone via gateway mt (option 4 and option 13, any other s3 compatible provider). Tune --transfers up until you saturate your upload bandwidth, do not increase past this point and it just creates overhead.
1000x <64MB file upload, native alternative. As above you can upload nativly if you have the compute and bandwidth to cover the 2.68x data expansion from erasure encoding. Select option 34 Tardigrade Decentralized Cloud Storage. This will be slower unless you have a lot of bandwidth and CPU cores. The big benefit is you are doing the encryption client side.
If big files tune --concurrency as noted in hotrod article and limit --transfers to as little as 1. Be sure to set chunk size
For downloading I use Uplink when it’s a single large or a few large files and rclone when its a bunch of files. With uplink again you will be CPU limited so scalae --concurrency to 1.5-2x your cpu core count (not threads). If you have a big server you might be able to be slightly faster than our hosted s3 endpoint. We are talking multi Gb/s, no issues.