I tried the rust-http's comparison with go from here. https://github.com/chris-morgan/rust-http/tree/master/comparisons
Using the default code, which I guess uses 1:1 scheduling, rust falls behind go when concurrency goes greater than the number of cores (4). I guess this is to be expected as context switches increase without additional parallelism. go 1 wrk 7856.76 rust 1 wrk 19617.39 go 2 wrk 20364.92 rust 2 wrk 30591.88 go 3 wrk 30408.15 rust 3 wrk 45847.69 go 4 wrk 41953.29 rust 4 wrk 53632.75 go 8 wrk 56632.79 rust 8 wrk 54660.72 go 16 wrk 58263.69 rust 16 wrk 54906.18 go 32 wrk 57773.54 rust 32 wrk 56682.38 However, on switching to M:N with this change, #![feature(phase)] #[phase(plugin)] extern crate green; green_start!(main) rust seems to be stuck around 25K req/s while go's throughput goes much higher. go 1 wrk 7850.23 rust 1 wrk 24361.64 go 2 wrk 20478.89 rust 2 wrk 23349.38 go 3 wrk 30592.79 rust 3 wrk 24232.2 go 4 wrk 42165.1 rust 4 wrk 25950.4 go 8 wrk 56540.86 rust 8 wrk 27284.01 go 16 wrk 57957.76 rust 16 wrk 26275.33 go 32 wrk 57611.55 rust 32 wrk 25674.82 Am I reading this wrong or does it indicate some bottleneck in the M:N scheduler? -- Chandra Sekar.S
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev