(fix) Update examples and benchmarks to remove rust-http.
This commit is contained in:
@@ -20,3 +20,6 @@ cookie = "*"
|
|||||||
time = "*"
|
time = "*"
|
||||||
mucell = "*"
|
mucell = "*"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
curl = "*"
|
||||||
|
|
||||||
|
|||||||
36
README.md
36
README.md
@@ -59,42 +59,6 @@ fn main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Scientific\* Benchmarks
|
|
||||||
|
|
||||||
[Client Bench:](./benches/client.rs)
|
|
||||||
|
|
||||||
```
|
|
||||||
running 3 tests
|
|
||||||
test bench_curl ... bench: 400253 ns/iter (+/- 143539)
|
|
||||||
test bench_hyper ... bench: 181703 ns/iter (+/- 46529)
|
|
||||||
|
|
||||||
test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured
|
|
||||||
```
|
|
||||||
|
|
||||||
[Mock Client Bench:](./benches/client_mock_tcp.rs)
|
|
||||||
|
|
||||||
```
|
|
||||||
running 3 tests
|
|
||||||
test bench_mock_curl ... bench: 53987 ns/iter (+/- 1735)
|
|
||||||
test bench_mock_http ... bench: 43569 ns/iter (+/- 1409)
|
|
||||||
test bench_mock_hyper ... bench: 20996 ns/iter (+/- 1742)
|
|
||||||
|
|
||||||
test result: ok. 0 passed; 0 failed; 0 ignored; 3 measured
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
[Server Bench:](./benches/server.rs)
|
|
||||||
|
|
||||||
```
|
|
||||||
running 2 tests
|
|
||||||
test bench_http ... bench: 296539 ns/iter (+/- 58861)
|
|
||||||
test bench_hyper ... bench: 233069 ns/iter (+/- 90194)
|
|
||||||
|
|
||||||
test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured
|
|
||||||
```
|
|
||||||
|
|
||||||
\* No science was harmed in the making of this benchmark.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[MIT](./LICENSE)
|
[MIT](./LICENSE)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#![feature(macro_rules)]
|
#![feature(macro_rules)]
|
||||||
extern crate curl;
|
extern crate curl;
|
||||||
extern crate http;
|
|
||||||
extern crate hyper;
|
extern crate hyper;
|
||||||
|
|
||||||
extern crate test;
|
extern crate test;
|
||||||
@@ -8,10 +7,8 @@ extern crate test;
|
|||||||
use std::fmt::{mod, Show};
|
use std::fmt::{mod, Show};
|
||||||
use std::io::net::ip::Ipv4Addr;
|
use std::io::net::ip::Ipv4Addr;
|
||||||
use hyper::server::{Request, Response, Server};
|
use hyper::server::{Request, Response, Server};
|
||||||
use hyper::method::Method::Get;
|
|
||||||
use hyper::header::Headers;
|
use hyper::header::Headers;
|
||||||
use hyper::Client;
|
use hyper::Client;
|
||||||
use hyper::client::RequestBuilder;
|
|
||||||
|
|
||||||
fn listen() -> hyper::server::Listening {
|
fn listen() -> hyper::server::Listening {
|
||||||
let server = Server::http(Ipv4Addr(127, 0, 0, 1), 0);
|
let server = Server::http(Ipv4Addr(127, 0, 0, 1), 0);
|
||||||
@@ -24,16 +21,16 @@ macro_rules! try_return(
|
|||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(..) => return
|
Err(..) => return
|
||||||
}
|
}
|
||||||
}})
|
}}
|
||||||
|
);
|
||||||
|
|
||||||
fn handle(_r: Request, res: Response) {
|
fn handle(_r: Request, res: Response) {
|
||||||
static BODY: &'static [u8] = b"Benchmarking hyper vs others!";
|
static BODY: &'static [u8] = b"Benchmarking hyper vs others!";
|
||||||
let mut res = try_return!(res.start());
|
let mut res = try_return!(res.start());
|
||||||
try_return!(res.write(BODY))
|
try_return!(res.write(BODY));
|
||||||
try_return!(res.end());
|
try_return!(res.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn bench_curl(b: &mut test::Bencher) {
|
fn bench_curl(b: &mut test::Bencher) {
|
||||||
let mut listening = listen();
|
let mut listening = listen();
|
||||||
@@ -81,26 +78,3 @@ fn bench_hyper(b: &mut test::Bencher) {
|
|||||||
listening.close().unwrap()
|
listening.close().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
doesn't handle keep-alive properly...
|
|
||||||
#[bench]
|
|
||||||
fn bench_http(b: &mut test::Bencher) {
|
|
||||||
let mut listening = listen();
|
|
||||||
let s = format!("http://{}/", listening.socket);
|
|
||||||
let url = s.as_slice();
|
|
||||||
b.iter(|| {
|
|
||||||
let mut req: http::client::RequestWriter = http::client::RequestWriter::new(
|
|
||||||
http::method::Get,
|
|
||||||
hyper::Url::parse(url).unwrap()
|
|
||||||
).unwrap();
|
|
||||||
req.headers.extensions.insert("x-foo".to_string(), "Bar".to_string());
|
|
||||||
// cant unwrap because Err contains RequestWriter, which does not implement Show
|
|
||||||
let mut res = match req.read_response() {
|
|
||||||
Ok(res) => res,
|
|
||||||
Err((_, ioe)) => panic!("http response failed = {}", ioe)
|
|
||||||
};
|
|
||||||
res.read_to_string().unwrap();
|
|
||||||
});
|
|
||||||
listening.close().unwrap()
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#![feature(default_type_params)]
|
#![feature(default_type_params)]
|
||||||
extern crate curl;
|
extern crate curl;
|
||||||
extern crate http;
|
|
||||||
extern crate hyper;
|
extern crate hyper;
|
||||||
|
|
||||||
extern crate test;
|
extern crate test;
|
||||||
@@ -8,12 +7,10 @@ extern crate test;
|
|||||||
use std::fmt::{mod, Show};
|
use std::fmt::{mod, Show};
|
||||||
use std::str::from_str;
|
use std::str::from_str;
|
||||||
use std::io::{IoResult, MemReader};
|
use std::io::{IoResult, MemReader};
|
||||||
use std::io::net::ip::{SocketAddr, ToSocketAddr};
|
use std::io::net::ip::SocketAddr;
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::path::BytesContainer;
|
use std::path::BytesContainer;
|
||||||
|
|
||||||
use http::connecter::Connecter;
|
|
||||||
|
|
||||||
use hyper::net;
|
use hyper::net;
|
||||||
|
|
||||||
static README: &'static [u8] = include_bin!("../README.md");
|
static README: &'static [u8] = include_bin!("../README.md");
|
||||||
@@ -117,27 +114,3 @@ fn bench_mock_hyper(b: &mut test::Bencher) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Connecter for MockStream {
|
|
||||||
fn connect(_addr: SocketAddr, _host: &str, _use_ssl: bool) -> IoResult<MockStream> {
|
|
||||||
Ok(MockStream::new())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[bench]
|
|
||||||
fn bench_mock_http(b: &mut test::Bencher) {
|
|
||||||
let url = "http://127.0.0.1:1337/";
|
|
||||||
b.iter(|| {
|
|
||||||
let mut req: http::client::RequestWriter<MockStream> = http::client::RequestWriter::new(
|
|
||||||
http::method::Get,
|
|
||||||
hyper::Url::parse(url).unwrap()
|
|
||||||
).unwrap();
|
|
||||||
req.headers.extensions.insert("x-foo".to_string(), "Bar".to_string());
|
|
||||||
// cant unwrap because Err contains RequestWriter, which does not implement Show
|
|
||||||
let mut res = match req.read_response() {
|
|
||||||
Ok(res) => res,
|
|
||||||
Err(..) => panic!("http response failed")
|
|
||||||
};
|
|
||||||
res.read_to_string().unwrap();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
// You have to ctrl-C after running this benchmark, since there is no way to kill
|
|
||||||
// a rust-http server.
|
|
||||||
|
|
||||||
extern crate http;
|
|
||||||
extern crate hyper;
|
extern crate hyper;
|
||||||
extern crate test;
|
extern crate test;
|
||||||
|
|
||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
use std::io::net::ip::{SocketAddr, Ipv4Addr};
|
use std::io::net::ip::Ipv4Addr;
|
||||||
|
|
||||||
use http::server::Server;
|
|
||||||
use hyper::method::Method::Get;
|
use hyper::method::Method::Get;
|
||||||
use hyper::server::{Request, Response};
|
use hyper::server::{Request, Response};
|
||||||
|
|
||||||
@@ -35,36 +30,3 @@ fn bench_hyper(b: &mut Bencher) {
|
|||||||
listener.close().unwrap();
|
listener.close().unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
static mut created_http: bool = false;
|
|
||||||
|
|
||||||
#[deriving(Clone)]
|
|
||||||
struct HttpServer;
|
|
||||||
|
|
||||||
impl Server for HttpServer {
|
|
||||||
fn get_config(&self) -> http::server::Config {
|
|
||||||
http::server::Config {
|
|
||||||
bind_address: SocketAddr {
|
|
||||||
ip: Ipv4Addr(127, 0, 0, 1),
|
|
||||||
port: 4000
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn handle_request(&self, _: http::server::Request, res: &mut http::server::ResponseWriter) {
|
|
||||||
res.write(PHRASE).unwrap();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[bench]
|
|
||||||
fn bench_http(b: &mut Bencher) {
|
|
||||||
if unsafe { !created_http } {
|
|
||||||
spawn(proc() { HttpServer.serve_forever() });
|
|
||||||
unsafe { created_http = true }
|
|
||||||
// Mega hack because there is no way to wait for serve_forever to start:
|
|
||||||
std::io::timer::sleep(std::time::duration::Duration::seconds(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
let url = hyper::Url::parse("http://localhost:4000").unwrap();
|
|
||||||
b.iter(|| request(url.clone()));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ macro_rules! try_return(
|
|||||||
Err(e) => { error!("Error: {}", e); return; }
|
Err(e) => { error!("Error: {}", e); return; }
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
)
|
);
|
||||||
|
|
||||||
fn echo(mut req: Request, mut res: Response) {
|
fn echo(mut req: Request, mut res: Response) {
|
||||||
match req.uri {
|
match req.uri {
|
||||||
|
|||||||
Reference in New Issue
Block a user