(fix) Update examples and benchmarks to remove rust-http.
This commit is contained in:
@@ -20,3 +20,6 @@ cookie = "*"
|
||||
time = "*"
|
||||
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
|
||||
|
||||
[MIT](./LICENSE)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#![feature(macro_rules)]
|
||||
extern crate curl;
|
||||
extern crate http;
|
||||
extern crate hyper;
|
||||
|
||||
extern crate test;
|
||||
@@ -8,10 +7,8 @@ extern crate test;
|
||||
use std::fmt::{mod, Show};
|
||||
use std::io::net::ip::Ipv4Addr;
|
||||
use hyper::server::{Request, Response, Server};
|
||||
use hyper::method::Method::Get;
|
||||
use hyper::header::Headers;
|
||||
use hyper::Client;
|
||||
use hyper::client::RequestBuilder;
|
||||
|
||||
fn listen() -> hyper::server::Listening {
|
||||
let server = Server::http(Ipv4Addr(127, 0, 0, 1), 0);
|
||||
@@ -24,16 +21,16 @@ macro_rules! try_return(
|
||||
Ok(v) => v,
|
||||
Err(..) => return
|
||||
}
|
||||
}})
|
||||
}}
|
||||
);
|
||||
|
||||
fn handle(_r: Request, res: Response) {
|
||||
static BODY: &'static [u8] = b"Benchmarking hyper vs others!";
|
||||
let mut res = try_return!(res.start());
|
||||
try_return!(res.write(BODY))
|
||||
try_return!(res.write(BODY));
|
||||
try_return!(res.end());
|
||||
}
|
||||
|
||||
|
||||
#[bench]
|
||||
fn bench_curl(b: &mut test::Bencher) {
|
||||
let mut listening = listen();
|
||||
@@ -81,26 +78,3 @@ fn bench_hyper(b: &mut test::Bencher) {
|
||||
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)]
|
||||
extern crate curl;
|
||||
extern crate http;
|
||||
extern crate hyper;
|
||||
|
||||
extern crate test;
|
||||
@@ -8,12 +7,10 @@ extern crate test;
|
||||
use std::fmt::{mod, Show};
|
||||
use std::str::from_str;
|
||||
use std::io::{IoResult, MemReader};
|
||||
use std::io::net::ip::{SocketAddr, ToSocketAddr};
|
||||
use std::io::net::ip::SocketAddr;
|
||||
use std::os;
|
||||
use std::path::BytesContainer;
|
||||
|
||||
use http::connecter::Connecter;
|
||||
|
||||
use hyper::net;
|
||||
|
||||
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 test;
|
||||
|
||||
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::server::{Request, Response};
|
||||
|
||||
@@ -35,36 +30,3 @@ fn bench_hyper(b: &mut Bencher) {
|
||||
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; }
|
||||
}
|
||||
}}
|
||||
)
|
||||
);
|
||||
|
||||
fn echo(mut req: Request, mut res: Response) {
|
||||
match req.uri {
|
||||
|
||||
Reference in New Issue
Block a user