On 12/21/12 12:17 AM, Brian Anderson wrote:
In the best case you essentially just want to be able to quickly
transfer large buffers from the client task to the I/O task, or the
other way. In a dual-core setup pipes should be able to do that very
fast, rarely yielding to the (Rust) scheduler.

Well, my point is that in *this* benchmark we will still lose. The benchmark that Michael wrote waits on the results of each Redis query before sending the next one. This makes the main thread always fall asleep, so every pipe send will have to fall into the scheduler to punt the main thread awake. It's basically the worst case for our setup.

I suspect the performance of this benchmark would be better if:

(1) The code were written in a more asynchronous "fire-and-forget" style rather than waiting on the results of each query before sending the next one; and/or:

(2) There were large (like, 100,000+) numbers of tasks involved, so that the performance advantages of M:N threading over 1:1 threading start to kick in.

But, as written, this benchmark is fundamentally better served by 1:1 blocking APIs.

Patrick

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to