diff options
| author | bors <bors@rust-lang.org> | 2013-11-10 12:26:10 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-11-10 12:26:10 -0800 |
| commit | b5e602ac563422e13a18be9f79100f96359d582a (patch) | |
| tree | 68f474d86ebf9a96a47259aaf2f3626a02d70eb5 /src/rustllvm/RustWrapper.cpp | |
| parent | 3851f908d16b55dfe69d5a423ecbef4cd224fae2 (diff) | |
| parent | e38a89d0b0fcc3b2f5cad600d7b3a16faeb94248 (diff) | |
| download | rust-b5e602ac563422e13a18be9f79100f96359d582a.tar.gz rust-b5e602ac563422e13a18be9f79100f96359d582a.zip | |
auto merge of #10321 : alexcrichton/rust/uv-rewrite, r=brson
The major impetus for this pull request was to remove all usage of `~fn()` in `librustuv`. This construct is going away as a language feature, and additionally it imposes the requirement that all I/O operations have at least one allocation. This allocation has been seen to have a fairly high performance impact in profiles of I/O benchmarks. I've migrated `librustuv` away from all usage of `~fn()`, and at the same time it no longer allocates on every I/O operation anywhere. The scheduler is now much more tightly integrated with all of the libuv bindings and most of the uv callbacks are specialized functions for a certain procedure. This is a step backwards in terms of making `librustuv` usable anywhere else, but I think that the performance gains are a big win here. In just a simple benchmark of reading/writing 4k of 0s at a time between a tcp client/server in separate processes on the same system, I have witnessed the throughput increase from ~750MB/s to ~1200MB/s with this change applied. I'm still in the process of testing this change, although all the major bugs (to my knowledge) have been fleshed out and removed. There are still a few spurious segfaults, and that's what I'm currently investigating. In the meantime, I wanted to put this up for review to get some eyes on it other than mine. I'll update this once I've got all the tests passing reliably again.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
