mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-05-30 23:21:05 +00:00
implement bench_log::bench_deserializer
This commit is contained in:
+95
-9
@@ -9,11 +9,13 @@ use std::io::MemWriter;
|
|||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
|
|
||||||
use json;
|
use json;
|
||||||
|
use de;
|
||||||
use ser::Serializable;
|
use ser::Serializable;
|
||||||
use ser;
|
use ser;
|
||||||
|
|
||||||
#[deriving(Encodable, Decodable)]
|
#[deriving(Encodable, Decodable)]
|
||||||
#[deriving_serializable]
|
#[deriving_serializable]
|
||||||
|
#[deriving_deserializable]
|
||||||
struct Http {
|
struct Http {
|
||||||
protocol: HttpProtocol,
|
protocol: HttpProtocol,
|
||||||
status: u32,
|
status: u32,
|
||||||
@@ -26,7 +28,7 @@ struct Http {
|
|||||||
request_uri: String,
|
request_uri: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Show, Encodable, Decodable)]
|
#[deriving(Show, Encodable, Decodable, FromPrimitive)]
|
||||||
enum HttpProtocol {
|
enum HttpProtocol {
|
||||||
HTTP_PROTOCOL_UNKNOWN,
|
HTTP_PROTOCOL_UNKNOWN,
|
||||||
HTTP10,
|
HTTP10,
|
||||||
@@ -43,7 +45,21 @@ impl ser::Serializable for HttpProtocol {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Show, Encodable, Decodable)]
|
impl de::Deserializable for HttpProtocol {
|
||||||
|
#[inline]
|
||||||
|
fn deserialize_token<
|
||||||
|
D: de::Deserializer<E>,
|
||||||
|
E
|
||||||
|
>(d: &mut D, token: de::Token) -> Result<HttpProtocol, E> {
|
||||||
|
let x: uint = try!(de::Deserializable::deserialize_token(d, token));
|
||||||
|
match FromPrimitive::from_uint(x) {
|
||||||
|
Some(x) => Ok(x),
|
||||||
|
None => d.syntax_error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[deriving(Show, Encodable, Decodable, FromPrimitive)]
|
||||||
enum HttpMethod {
|
enum HttpMethod {
|
||||||
METHOD_UNKNOWN,
|
METHOD_UNKNOWN,
|
||||||
GET,
|
GET,
|
||||||
@@ -68,7 +84,21 @@ impl ser::Serializable for HttpMethod {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Show, Encodable, Decodable)]
|
impl de::Deserializable for HttpMethod {
|
||||||
|
#[inline]
|
||||||
|
fn deserialize_token<
|
||||||
|
D: de::Deserializer<E>,
|
||||||
|
E
|
||||||
|
>(d: &mut D, token: de::Token) -> Result<HttpMethod, E> {
|
||||||
|
let x: uint = try!(de::Deserializable::deserialize_token(d, token));
|
||||||
|
match FromPrimitive::from_uint(x) {
|
||||||
|
Some(x) => Ok(x),
|
||||||
|
None => d.syntax_error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[deriving(Show, Encodable, Decodable, FromPrimitive)]
|
||||||
enum CacheStatus {
|
enum CacheStatus {
|
||||||
CACHESTATUS_UNKNOWN,
|
CACHESTATUS_UNKNOWN,
|
||||||
Miss,
|
Miss,
|
||||||
@@ -86,8 +116,23 @@ impl ser::Serializable for CacheStatus {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl de::Deserializable for CacheStatus {
|
||||||
|
#[inline]
|
||||||
|
fn deserialize_token<
|
||||||
|
D: de::Deserializer<E>,
|
||||||
|
E
|
||||||
|
>(d: &mut D, token: de::Token) -> Result<CacheStatus, E> {
|
||||||
|
let x: uint = try!(de::Deserializable::deserialize_token(d, token));
|
||||||
|
match FromPrimitive::from_uint(x) {
|
||||||
|
Some(x) => Ok(x),
|
||||||
|
None => d.syntax_error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[deriving(Encodable, Decodable)]
|
#[deriving(Encodable, Decodable)]
|
||||||
#[deriving_serializable]
|
#[deriving_serializable]
|
||||||
|
#[deriving_deserializable]
|
||||||
struct Origin {
|
struct Origin {
|
||||||
ip: String,
|
ip: String,
|
||||||
port: u32,
|
port: u32,
|
||||||
@@ -95,7 +140,7 @@ struct Origin {
|
|||||||
protocol: OriginProtocol,
|
protocol: OriginProtocol,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Show, Encodable, Decodable)]
|
#[deriving(Show, Encodable, Decodable, FromPrimitive)]
|
||||||
enum OriginProtocol {
|
enum OriginProtocol {
|
||||||
ORIGIN_PROTOCOL_UNKNOWN,
|
ORIGIN_PROTOCOL_UNKNOWN,
|
||||||
HTTP,
|
HTTP,
|
||||||
@@ -112,7 +157,21 @@ impl ser::Serializable for OriginProtocol {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Show, Encodable, Decodable)]
|
impl de::Deserializable for OriginProtocol {
|
||||||
|
#[inline]
|
||||||
|
fn deserialize_token<
|
||||||
|
D: de::Deserializer<E>,
|
||||||
|
E
|
||||||
|
>(d: &mut D, token: de::Token) -> Result<OriginProtocol, E> {
|
||||||
|
let x: uint = try!(de::Deserializable::deserialize_token(d, token));
|
||||||
|
match FromPrimitive::from_uint(x) {
|
||||||
|
Some(x) => Ok(x),
|
||||||
|
None => d.syntax_error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[deriving(Show, Encodable, Decodable, FromPrimitive)]
|
||||||
enum ZonePlan {
|
enum ZonePlan {
|
||||||
ZONEPLAN_UNKNOWN,
|
ZONEPLAN_UNKNOWN,
|
||||||
FREE,
|
FREE,
|
||||||
@@ -131,7 +190,21 @@ impl ser::Serializable for ZonePlan {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Show, Encodable, Decodable)]
|
impl de::Deserializable for ZonePlan {
|
||||||
|
#[inline]
|
||||||
|
fn deserialize_token<
|
||||||
|
D: de::Deserializer<E>,
|
||||||
|
E
|
||||||
|
>(d: &mut D, token: de::Token) -> Result<ZonePlan, E> {
|
||||||
|
let x: uint = try!(de::Deserializable::deserialize_token(d, token));
|
||||||
|
match FromPrimitive::from_uint(x) {
|
||||||
|
Some(x) => Ok(x),
|
||||||
|
None => d.syntax_error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[deriving(Show, Encodable, Decodable, FromPrimitive)]
|
||||||
enum Country {
|
enum Country {
|
||||||
UNKNOWN,
|
UNKNOWN,
|
||||||
A1,
|
A1,
|
||||||
@@ -401,8 +474,23 @@ impl ser::Serializable for Country {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl de::Deserializable for Country {
|
||||||
|
#[inline]
|
||||||
|
fn deserialize_token<
|
||||||
|
D: de::Deserializer<E>,
|
||||||
|
E
|
||||||
|
>(d: &mut D, token: de::Token) -> Result<Country, E> {
|
||||||
|
let x: uint = try!(de::Deserializable::deserialize_token(d, token));
|
||||||
|
match FromPrimitive::from_uint(x) {
|
||||||
|
Some(x) => Ok(x),
|
||||||
|
None => d.syntax_error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[deriving(Encodable, Decodable)]
|
#[deriving(Encodable, Decodable)]
|
||||||
#[deriving_serializable]
|
#[deriving_serializable]
|
||||||
|
#[deriving_deserializable]
|
||||||
struct Log {
|
struct Log {
|
||||||
timestamp: i64,
|
timestamp: i64,
|
||||||
zone_id: u32,
|
zone_id: u32,
|
||||||
@@ -1304,10 +1392,9 @@ fn bench_decoder(b: &mut Bencher) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
#[bench]
|
#[bench]
|
||||||
fn bench_deserializer(b: &mut Bencher) {
|
fn bench_deserializer(b: &mut Bencher) {
|
||||||
let s = r#"{"timestamp":2837513946597,"zone_id":123456,"zone_plan":"FREE","http":{"protocol":"HTTP11","status":200,"host_status":503,"up_status":520,"method":"GET","content_type":"text/html","user_agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36","referer":"https://www.cloudflare.com/","request_uri":"/cdn-cgi/trace"},"origin":{"ip":"1.2.3.4","port":8000,"hostname":"www.example.com","protocol":"HTTPS"},"country":"US","cache_status":"Hit","server_ip":"192.168.1.1","server_name":"metal.cloudflare.com","remote_ip":"10.1.2.3","bytes_dlv":123456,"ray_id":"10c73629cce30078-LAX"}"#;
|
let s = r#"{"timestamp":25469139677502,"zone_id":123456,"zone_plan":1,"http":{"protocol":2,"status":200,"host_status":503,"up_status":520,"method":1,"content_type":"text/html","user_agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36","referer":"https://www.cloudflare.com/","request_uri":"/cdn-cgi/trace"},"origin":{"ip":"1.2.3.4","port":8000,"hostname":"www.example.com","protocol":2},"country":238,"cache_status":3,"server_ip":"192.168.1.1","server_name":"metal.cloudflare.com","remote_ip":"10.1.2.3","bytes_dlv":123456,"ray_id":"10c73629cce30078-LAX"}"#;
|
||||||
|
|
||||||
b.bytes = s.len() as u64;
|
b.bytes = s.len() as u64;
|
||||||
|
|
||||||
@@ -1315,4 +1402,3 @@ fn bench_deserializer(b: &mut Bencher) {
|
|||||||
let _log: Log = json::from_str(s).unwrap();
|
let _log: Log = json::from_str(s).unwrap();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|||||||
Reference in New Issue
Block a user