mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2025-11-13 23:31:37 -05:00
switch to a hyper vendor branch with Nagle fix
There were Nagle's algorithm delays in both the "fresh_client" and "reuse_client" versions of the .mp4 serving benchmark. Now performance is much more consistent.
This commit is contained in:
33
src/mp4.rs
33
src/mp4.rs
@@ -1772,39 +1772,14 @@ mod bench {
|
||||
|
||||
/// Benchmarks serving the generated part of a `.mp4` file (up to the first byte from disk).
|
||||
#[bench]
|
||||
fn serve_generated_bytes_fresh_client(b: &mut Bencher) {
|
||||
testutil::init();
|
||||
let server = &*SERVER;
|
||||
let p = server.generated_len;
|
||||
let mut buf = Vec::with_capacity(p as usize);
|
||||
b.bytes = p;
|
||||
b.iter(|| {
|
||||
let client = hyper::Client::new();
|
||||
let mut resp =
|
||||
client.get(server.url.clone())
|
||||
.header(header::Range::Bytes(vec![header::ByteRangeSpec::FromTo(0, p - 1)]))
|
||||
.send()
|
||||
.unwrap();
|
||||
buf.clear();
|
||||
use std::io::Read;
|
||||
let size = resp.read_to_end(&mut buf).unwrap();
|
||||
assert_eq!(p, size as u64);
|
||||
});
|
||||
}
|
||||
|
||||
/// Another benchmark of serving generated bytes, but reusing the `hyper::Client`.
|
||||
/// This should be faster than the `fresh` version, but see
|
||||
/// [this hyper issue](https://github.com/hyperium/hyper/issues/944) relating to Nagle's
|
||||
/// algorithm.
|
||||
#[bench]
|
||||
fn serve_generated_bytes_reuse_client(b: &mut Bencher) {
|
||||
fn serve_generated_bytes(b: &mut Bencher) {
|
||||
testutil::init();
|
||||
let server = &*SERVER;
|
||||
let p = server.generated_len;
|
||||
let mut buf = Vec::with_capacity(p as usize);
|
||||
b.bytes = p;
|
||||
let client = hyper::Client::new();
|
||||
b.iter(|| {
|
||||
let mut run = || {
|
||||
let mut resp =
|
||||
client.get(server.url.clone())
|
||||
.header(header::Range::Bytes(vec![header::ByteRangeSpec::FromTo(0, p - 1)]))
|
||||
@@ -1814,7 +1789,9 @@ mod bench {
|
||||
use std::io::Read;
|
||||
let size = resp.read_to_end(&mut buf).unwrap();
|
||||
assert_eq!(p, size as u64);
|
||||
});
|
||||
};
|
||||
run(); // warm.
|
||||
b.iter(run);
|
||||
}
|
||||
|
||||
#[bench]
|
||||
|
||||
Reference in New Issue
Block a user