This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
222
unikernel/duniverse/ocaml-re/benchmarks/benchmark.ml
Normal file
222
unikernel/duniverse/ocaml-re/benchmarks/benchmark.ml
Normal file
|
|
@ -0,0 +1,222 @@
|
|||
open Core
|
||||
open Core_bench
|
||||
|
||||
let str_20_zeroes = String.make 20 '0'
|
||||
let re_20_zeroes = Re.(str str_20_zeroes)
|
||||
|
||||
let lots_of_a's =
|
||||
String.init 101 ~f:(function
|
||||
| 100 -> 'b'
|
||||
| _ -> 'a')
|
||||
;;
|
||||
|
||||
let lots_o_a's_re = Re.(seq [ char 'a'; opt (char 'a'); char 'b' ])
|
||||
|
||||
let media_type_re =
|
||||
let re = Re.Emacs.re ~case:true "[ \t]*\\([^ \t;]+\\)" in
|
||||
Re.(seq [ start; re ])
|
||||
;;
|
||||
|
||||
(* Taken from https://github.com/rgrinberg/ocaml-uri/blob/903ef1010f9808d6f3f6d9c1fe4b4eabbd76082d/lib/uri.ml*)
|
||||
let uri_reference =
|
||||
Re.Posix.re "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"
|
||||
;;
|
||||
|
||||
let uris =
|
||||
[ "https://google.com"
|
||||
; "http://yahoo.com/xxx/yyy?query=param&one=two"
|
||||
; "file:/random_crap"
|
||||
]
|
||||
;;
|
||||
|
||||
let benchmarks =
|
||||
[ "20 zeroes", re_20_zeroes, [ str_20_zeroes ]
|
||||
; "lots of a's", lots_o_a's_re, [ lots_of_a's ]
|
||||
; "media type match", media_type_re, [ " foo/bar ; charset=UTF-8" ]
|
||||
; "uri", uri_reference, uris
|
||||
]
|
||||
;;
|
||||
|
||||
let test ~name re f =
|
||||
[ Bench.Test.create ~name (fun () -> f re)
|
||||
; (let re () =
|
||||
let re = lazy (re ()) in
|
||||
Lazy.force re
|
||||
in
|
||||
Bench.Test.create ~name:(sprintf "%s (compiled)" name) (fun () -> f re))
|
||||
]
|
||||
;;
|
||||
|
||||
let exec_bench exec name (re : Re.t) cases =
|
||||
Bench.Test.create_group
|
||||
~name
|
||||
(List.concat_map cases ~f:(fun data ->
|
||||
let name =
|
||||
let len = String.length data in
|
||||
if len > 70
|
||||
then Printf.sprintf "%s .. (%d)" (String.sub data ~pos:0 ~len:10) len
|
||||
else data
|
||||
in
|
||||
let re () = Re.compile re in
|
||||
test ~name re (fun re -> ignore (exec (re ()) data))))
|
||||
;;
|
||||
|
||||
let exec_bench_many exec name re cases =
|
||||
test
|
||||
~name
|
||||
(fun () -> Re.compile re)
|
||||
(fun re ->
|
||||
let re = re () in
|
||||
List.iter cases ~f:(fun x -> ignore (exec re x)))
|
||||
;;
|
||||
|
||||
let string_traversal =
|
||||
let len = 1000 * 1000 in
|
||||
let s = String.make len 'a' in
|
||||
let re =
|
||||
let re = Re.Pcre.re "aaaaaaaaaaaaaaaaz" in
|
||||
fun () -> Re.compile re
|
||||
in
|
||||
test ~name:"string traversal from #210" re (fun re ->
|
||||
ignore (Re.execp (re ()) s ~pos:0))
|
||||
;;
|
||||
|
||||
let compile_clean_star =
|
||||
let c = 'c' in
|
||||
let s = String.make 10_000 c in
|
||||
let re = Re.rep (Re.char 'c') in
|
||||
let re () = Re.compile re in
|
||||
test ~name:"kleene star compilation" re (fun re -> ignore (Re.execp (re ()) s))
|
||||
;;
|
||||
|
||||
let repeated_sequence =
|
||||
let s = String.init 256 ~f:Char.of_int_exn in
|
||||
let re () = Re.repn (Re.str s) 50 (Some 50) |> Re.compile in
|
||||
let s = List.init 50 ~f:(fun _ -> s) |> String.concat ~sep:"" in
|
||||
test ~name:"repeated sequence re" re (fun re ->
|
||||
let re = re () in
|
||||
ignore (Re.execp re s))
|
||||
;;
|
||||
|
||||
let split =
|
||||
let s = Bytes.make 1_000 '_' in
|
||||
for i = 0 to 100 do
|
||||
Bytes.set s (i * 9) ' '
|
||||
done;
|
||||
let s = Bytes.to_string s in
|
||||
let re () = Re.(rep1 space |> compile) in
|
||||
test ~name:"split on whitespace" re (fun re -> ignore (Re.split_full (re ()) s))
|
||||
;;
|
||||
|
||||
let prefixes =
|
||||
let make_ext =
|
||||
let chars = "abcdefghiklmnopqrstuvwxyz" in
|
||||
let buf = Buffer.create 4 in
|
||||
let rec loop remains =
|
||||
match remains with
|
||||
| 0 -> Buffer.contents buf
|
||||
| _ ->
|
||||
let char = remains mod String.length chars in
|
||||
Buffer.add_char buf chars.[char];
|
||||
loop (remains / String.length chars)
|
||||
in
|
||||
fun n ->
|
||||
Buffer.clear buf;
|
||||
loop n
|
||||
in
|
||||
let n_extensions = 100 in
|
||||
let n_base = 20 in
|
||||
let base = String.make n_base 'x' ^ "." in
|
||||
let extensions = List.init n_extensions ~f:make_ext in
|
||||
let re () =
|
||||
(* This regular expression can be heavily optimized by computing the shared prefix *)
|
||||
List.init 100 ~f:(fun i ->
|
||||
let ext = make_ext i in
|
||||
let open Re in
|
||||
seq [ rep1 any; char '.'; str ext ])
|
||||
|> Re.alt
|
||||
|> Re.compile
|
||||
in
|
||||
let extensions = Array.of_list extensions in
|
||||
test ~name:"shared prefixes" re (fun re ->
|
||||
let re = re () in
|
||||
for i = 0 to Array.length extensions - 1 do
|
||||
let extension = extensions.(i) in
|
||||
let str = base ^ extension in
|
||||
ignore (Re.execp re str)
|
||||
done)
|
||||
;;
|
||||
|
||||
let benchmarks =
|
||||
let benches =
|
||||
List.map benchmarks ~f:(fun (name, re, cases) ->
|
||||
Bench.Test.create_group
|
||||
~name
|
||||
[ exec_bench Re.exec "exec" re cases
|
||||
; exec_bench Re.execp "execp" re cases
|
||||
; exec_bench Re.exec_opt "exec_opt" re cases
|
||||
])
|
||||
in
|
||||
let http_benches =
|
||||
let open Http.Export in
|
||||
let manual =
|
||||
[ request, "no group"; request_g, "group" ]
|
||||
|> List.concat_map ~f:(fun (re, name) ->
|
||||
let re () = Re.compile re in
|
||||
test ~name re (fun re ->
|
||||
let re = re () in
|
||||
Http.read_all 0 re Http.requests))
|
||||
|> Bench.Test.create_group ~name:"manual"
|
||||
in
|
||||
let many =
|
||||
[ test
|
||||
~name:"execp no group"
|
||||
(fun () -> Re.compile requests)
|
||||
(fun re -> ignore (Re.execp (re ()) Http.requests))
|
||||
; test
|
||||
~name:"all_gen"
|
||||
(fun () -> Re.compile requests_g)
|
||||
(fun re -> Http.requests |> Re.all (re ()))
|
||||
]
|
||||
|> List.concat
|
||||
|> Bench.Test.create_group ~name:"auto"
|
||||
in
|
||||
Bench.Test.create_group ~name:"http" [ manual; many ]
|
||||
in
|
||||
benches
|
||||
@ [ [ exec_bench_many Re.execp "execp"; exec_bench_many Re.exec_opt "exec_opt" ]
|
||||
|> List.concat_map ~f:(fun f -> f Tex.ignore_re Tex.ignore_filesnames)
|
||||
|> Bench.Test.create_group ~name:"tex gitignore"
|
||||
]
|
||||
@ [ http_benches ]
|
||||
@ string_traversal
|
||||
@ compile_clean_star
|
||||
@ Memory.benchmarks
|
||||
@ repeated_sequence
|
||||
@ split
|
||||
@ prefixes
|
||||
;;
|
||||
|
||||
let () =
|
||||
let benchmarks =
|
||||
match Sys.getenv "RE_BENCH_FILTER" with
|
||||
| None -> benchmarks
|
||||
| Some only ->
|
||||
let only = String.split ~on:',' only in
|
||||
let filtered =
|
||||
List.filter benchmarks ~f:(fun bench ->
|
||||
let name = Bench.Test.name bench in
|
||||
List.mem only name ~equal:String.equal)
|
||||
in
|
||||
(match filtered with
|
||||
| _ :: _ -> filtered
|
||||
| [] ->
|
||||
print_endline "No benchmarks to run. Your options are:";
|
||||
List.iter benchmarks ~f:(fun bench ->
|
||||
let name = Bench.Test.name bench in
|
||||
Printf.printf "- %s\n" name);
|
||||
exit 1)
|
||||
in
|
||||
Memtrace.trace_if_requested ();
|
||||
Command_unix.run (Bench.make_command benchmarks)
|
||||
;;
|
||||
182
unikernel/duniverse/ocaml-re/benchmarks/compare.ml
Normal file
182
unikernel/duniverse/ocaml-re/benchmarks/compare.ml
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
open Core
|
||||
|
||||
module Both = struct
|
||||
type 'a t =
|
||||
{ lhs : 'a
|
||||
; rhs : 'a
|
||||
}
|
||||
end
|
||||
|
||||
module Value = struct
|
||||
type t =
|
||||
| Int of int
|
||||
| Float of float
|
||||
|
||||
let of_string s =
|
||||
try Int (Int.of_string s) with
|
||||
| _ -> Float (Float.of_string s)
|
||||
;;
|
||||
|
||||
let rec percent_delta x y =
|
||||
match x, y with
|
||||
| Int x, Int y ->
|
||||
let delta = y - x in
|
||||
let open Float in
|
||||
Float (100. * Float.of_int delta / Float.of_int x)
|
||||
| Float x, Float y -> Float Float.(100. * (y - x) / x)
|
||||
| Float x, Int y -> percent_delta (Float x) (Float (Float.of_int y))
|
||||
| Int x, Float y -> percent_delta (Float (Float.of_int x)) (Float y)
|
||||
;;
|
||||
|
||||
let to_csv t =
|
||||
match t with
|
||||
| Float f -> Float.to_string_hum f
|
||||
| Int x -> Int.to_string_hum x
|
||||
;;
|
||||
|
||||
let compare x y =
|
||||
match x, y with
|
||||
| Float x, Float y -> Float.compare x y
|
||||
| Int x, Int y -> Int.compare x y
|
||||
| _, _ -> assert false
|
||||
;;
|
||||
end
|
||||
|
||||
type 'a bench =
|
||||
{ name : string
|
||||
; time_per_run_nanos : 'a
|
||||
; major_words_per_run : 'a
|
||||
; promoted_words_per_run : 'a
|
||||
; minor_words_per_run : 'a
|
||||
}
|
||||
|
||||
let of_sexp (sexp : Sexp.t) =
|
||||
match sexp with
|
||||
| Atom _ -> failwith "expected list"
|
||||
| List fields ->
|
||||
let kv (sexp : Sexp.t) =
|
||||
match sexp with
|
||||
| List [ Atom k; Atom v ] -> Some (k, v)
|
||||
| _ -> None
|
||||
in
|
||||
let fields = List.filter_map fields ~f:kv in
|
||||
let field name =
|
||||
List.find_map_exn fields ~f:(fun (k, v) ->
|
||||
if String.equal k name then Some v else None)
|
||||
in
|
||||
let name = field "full_benchmark_name" in
|
||||
let time_per_run_nanos = Value.of_string (field "time_per_run_nanos") in
|
||||
let major_words_per_run = Value.of_string (field "major_words_per_run") in
|
||||
let promoted_words_per_run = Value.of_string (field "promoted_words_per_run") in
|
||||
let minor_words_per_run = Value.of_string (field "minor_words_per_run") in
|
||||
{ name
|
||||
; time_per_run_nanos
|
||||
; major_words_per_run
|
||||
; promoted_words_per_run
|
||||
; minor_words_per_run
|
||||
}
|
||||
;;
|
||||
|
||||
let parse_all s =
|
||||
match Sexp.of_string s with
|
||||
| Atom _ -> failwith "list expected"
|
||||
| List benches ->
|
||||
List.map benches ~f:of_sexp
|
||||
|> String.Map.of_list_with_key_exn ~get_key:(fun v -> v.name)
|
||||
;;
|
||||
|
||||
let merge_one
|
||||
{ name
|
||||
; time_per_run_nanos
|
||||
; major_words_per_run
|
||||
; promoted_words_per_run
|
||||
; minor_words_per_run
|
||||
}
|
||||
b
|
||||
=
|
||||
assert (String.equal name b.name);
|
||||
{ b with
|
||||
time_per_run_nanos = { Both.lhs = time_per_run_nanos; rhs = b.time_per_run_nanos }
|
||||
; major_words_per_run = { Both.lhs = major_words_per_run; rhs = b.major_words_per_run }
|
||||
; promoted_words_per_run =
|
||||
{ Both.lhs = promoted_words_per_run; rhs = b.promoted_words_per_run }
|
||||
; minor_words_per_run = { Both.lhs = minor_words_per_run; rhs = b.minor_words_per_run }
|
||||
}
|
||||
;;
|
||||
|
||||
let merge lhs rhs =
|
||||
Map.merge lhs rhs ~f:(fun ~key:_ v ->
|
||||
match v with
|
||||
| `Left _ -> None
|
||||
| `Right _ -> None
|
||||
| `Both (lhs, rhs) -> Some (merge_one lhs rhs))
|
||||
;;
|
||||
|
||||
let run ~prev ~next =
|
||||
let report =
|
||||
let prev = Stdio.In_channel.read_all prev |> parse_all in
|
||||
let next = Stdio.In_channel.read_all next |> parse_all in
|
||||
merge prev next
|
||||
in
|
||||
let records =
|
||||
let headers =
|
||||
[ "name"
|
||||
; "time_per_run_nanos"
|
||||
; "delta (%)"
|
||||
; "major_words_per_run"
|
||||
; "delta (%)"
|
||||
; "promoted_words_per_run"
|
||||
; "delta (%)"
|
||||
; "minor_words_per_run"
|
||||
; "delta (%)"
|
||||
]
|
||||
in
|
||||
let values =
|
||||
Map.to_alist report
|
||||
|> List.map ~f:snd
|
||||
|> List.map
|
||||
~f:
|
||||
(fun
|
||||
({ name
|
||||
; time_per_run_nanos
|
||||
; major_words_per_run
|
||||
; promoted_words_per_run
|
||||
; minor_words_per_run
|
||||
} :
|
||||
Value.t Both.t bench)
|
||||
->
|
||||
let time_delta =
|
||||
Value.percent_delta time_per_run_nanos.lhs time_per_run_nanos.rhs
|
||||
in
|
||||
let make_delta { Both.lhs; rhs } =
|
||||
let delta = Value.percent_delta lhs rhs in
|
||||
[ Value.to_csv lhs; Value.to_csv delta ]
|
||||
in
|
||||
( time_delta
|
||||
, name
|
||||
:: List.concat
|
||||
[ make_delta time_per_run_nanos
|
||||
; make_delta major_words_per_run
|
||||
; make_delta promoted_words_per_run
|
||||
; make_delta minor_words_per_run
|
||||
] ))
|
||||
|> List.sort ~compare:(fun (x, _) (y, _) -> Value.compare x y)
|
||||
|> List.map ~f:snd
|
||||
in
|
||||
headers :: values
|
||||
in
|
||||
let chan = Csv.to_channel Stdio.stdout in
|
||||
Csv.output_all chan records
|
||||
;;
|
||||
|
||||
let command =
|
||||
let open Command.Param in
|
||||
let open Command.Param.Applicative_infix in
|
||||
Command.basic
|
||||
~summary:"compare two runs"
|
||||
(let prev = flag "prev" (required string) ~doc:"sexp file" in
|
||||
let next = flag "next" (required string) ~doc:"sexp file" in
|
||||
Command.Param.return (fun prev next () -> run ~prev ~next) <*> prev <*> next)
|
||||
;;
|
||||
|
||||
let () = Command_unix.run command
|
||||
35
unikernel/duniverse/ocaml-re/benchmarks/dune
Normal file
35
unikernel/duniverse/ocaml-re/benchmarks/dune
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
(env
|
||||
(dev
|
||||
(flags
|
||||
(:standard -w -58))))
|
||||
|
||||
(executables
|
||||
(enabled_if
|
||||
(not %{env:CI=false}))
|
||||
(libraries
|
||||
re
|
||||
core
|
||||
base
|
||||
stdio
|
||||
threads
|
||||
core_bench
|
||||
core_unix.command_unix
|
||||
memtrace)
|
||||
(modules :standard \ compare)
|
||||
(names benchmark))
|
||||
|
||||
(executable
|
||||
(enabled_if
|
||||
(not %{env:CI=false}))
|
||||
(name compare)
|
||||
(modules compare)
|
||||
(libraries
|
||||
core
|
||||
csv
|
||||
base
|
||||
core_unix
|
||||
core_unix.command_unix
|
||||
core_unix.filename_unix
|
||||
spawn
|
||||
stdio
|
||||
sexplib))
|
||||
1120
unikernel/duniverse/ocaml-re/benchmarks/files
Normal file
1120
unikernel/duniverse/ocaml-re/benchmarks/files
Normal file
File diff suppressed because it is too large
Load diff
494
unikernel/duniverse/ocaml-re/benchmarks/http-requests.txt
Normal file
494
unikernel/duniverse/ocaml-re/benchmarks/http-requests.txt
Normal file
|
|
@ -0,0 +1,494 @@
|
|||
GET / HTTP/1.1
|
||||
Host: www.reddit.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
|
||||
GET /reddit.v_EZwRzV-Ns.css HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: text/css,*/*;q=0.1
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /reddit-init.en-us.O1zuMqOOQvY.js HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: */*
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /reddit.en-us.31yAfSoTsfo.js HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: */*
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /kill.png HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /icon.png HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
|
||||
GET /favicon.ico HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
|
||||
GET /AMZM4CWd6zstSC8y.jpg HTTP/1.1
|
||||
Host: b.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /jz1d5Nm0w97-YyNm.jpg HTTP/1.1
|
||||
Host: b.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /aWGO99I6yOcNUKXB.jpg HTTP/1.1
|
||||
Host: a.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /rZ_rD5TjrJM0E9Aj.css HTTP/1.1
|
||||
Host: e.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: text/css,*/*;q=0.1
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /tmsPwagFzyTvrGRx.jpg HTTP/1.1
|
||||
Host: a.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /KYgUaLvXCK3TCEJx.jpg HTTP/1.1
|
||||
Host: a.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /81pzxT5x2ozuEaxX.jpg HTTP/1.1
|
||||
Host: e.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /MFqCUiUVPO5V8t6x.jpg HTTP/1.1
|
||||
Host: a.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /TFpYTiAO5aEowokv.jpg HTTP/1.1
|
||||
Host: e.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /eMWMpmm9APNeNqcF.jpg HTTP/1.1
|
||||
Host: e.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /S-IpsJrOKuaK9GZ8.jpg HTTP/1.1
|
||||
Host: c.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /3V6dj9PDsNnheDXn.jpg HTTP/1.1
|
||||
Host: c.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /wQ3-VmNXhv8sg4SJ.jpg HTTP/1.1
|
||||
Host: c.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /ixd1C1njpczEWC22.jpg HTTP/1.1
|
||||
Host: c.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /nGsQj15VyOHMwmq8.jpg HTTP/1.1
|
||||
Host: c.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /zT4yQmDxQLbIxK1b.jpg HTTP/1.1
|
||||
Host: c.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /L5e1HcZLv1iu4nrG.jpg HTTP/1.1
|
||||
Host: f.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /WJFFPxD8X4JO_lIG.jpg HTTP/1.1
|
||||
Host: f.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /hVMVTDdjuY3bQox5.jpg HTTP/1.1
|
||||
Host: f.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /rnWf8CjBcyPQs5y_.jpg HTTP/1.1
|
||||
Host: f.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /gZJL1jNylKbGV4d-.jpg HTTP/1.1
|
||||
Host: d.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /aNd2zNRLXiMnKUFh.jpg HTTP/1.1
|
||||
Host: c.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /droparrowgray.gif HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.redditstatic.com/reddit.v_EZwRzV-Ns.css
|
||||
|
||||
GET /sprite-reddit.an0Lnf61Ap4.png HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.redditstatic.com/reddit.v_EZwRzV-Ns.css
|
||||
|
||||
GET /ga.js HTTP/1.1
|
||||
Host: www.google-analytics.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: */*
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
If-Modified-Since: Tue, 29 Oct 2013 19:33:51 GMT
|
||||
|
||||
GET /reddit/ads.html?sr=-reddit.com&bust2 HTTP/1.1
|
||||
Host: static.adzerk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /pixel/of_destiny.png?v=hOlmDALJCWWdjzfBV4ZxJPmrdCLWB%2Ftq7Z%2Ffp4Q%2FxXbVPPREuMJMVGzKraTuhhNWxCCwi6yFEZg%3D&r=783333388 HTTP/1.1
|
||||
Host: pixel.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /UNcO-h_QcS9PD-Gn.jpg HTTP/1.1
|
||||
Host: c.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://e.thumbs.redditmedia.com/rZ_rD5TjrJM0E9Aj.css
|
||||
|
||||
GET /welcome-lines.png HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.redditstatic.com/reddit.v_EZwRzV-Ns.css
|
||||
|
||||
GET /welcome-upvote.png HTTP/1.1
|
||||
Host: www.redditstatic.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.redditstatic.com/reddit.v_EZwRzV-Ns.css
|
||||
|
||||
GET /__utm.gif?utmwv=5.5.1&utms=1&utmn=720496082&utmhn=www.reddit.com&utme=8(site*srpath*usertype*uitype)9(%20reddit.com*%20reddit.com-GET_listing*guest*web)11(3!2)&utmcs=UTF-8&utmsr=2560x1600&utmvp=1288x792&utmsc=24-bit&utmul=en-us&utmje=1&utmfl=13.0%20r0&utmdt=reddit%3A%20the%20front%20page%20of%20the%20internet&utmhid=2129416330&utmr=-&utmp=%2F&utmht=1400862512705&utmac=UA-12131688-1&utmcc=__utma%3D55650728.585571751.1400862513.1400862513.1400862513.1%3B%2B__utmz%3D55650728.1400862513.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)%3B&utmu=qR~ HTTP/1.1
|
||||
Host: www.google-analytics.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /ImnpOQhbXUPkwceN.png HTTP/1.1
|
||||
Host: a.thumbs.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /ajax/libs/jquery/1.7.1/jquery.min.js HTTP/1.1
|
||||
Host: ajax.googleapis.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: */*
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads.html?sr=-reddit.com&bust2
|
||||
|
||||
GET /__utm.gif?utmwv=5.5.1&utms=2&utmn=1493472678&utmhn=www.reddit.com&utmt=event&utme=5(AdBlock*enabled*false)(0)8(site*srpath*usertype*uitype)9(%20reddit.com*%20reddit.com-GET_listing*guest*web)11(3!2)&utmcs=UTF-8&utmsr=2560x1600&utmvp=1288x792&utmsc=24-bit&utmul=en-us&utmje=1&utmfl=13.0%20r0&utmdt=reddit%3A%20the%20front%20page%20of%20the%20internet&utmhid=2129416330&utmr=-&utmp=%2F&utmht=1400862512708&utmac=UA-12131688-1&utmni=1&utmcc=__utma%3D55650728.585571751.1400862513.1400862513.1400862513.1%3B%2B__utmz%3D55650728.1400862513.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)%3B&utmu=6R~ HTTP/1.1
|
||||
Host: www.google-analytics.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /ados.js?q=43 HTTP/1.1
|
||||
Host: secure.adzerk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: */*
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads.html?sr=-reddit.com&bust2
|
||||
|
||||
GET /fetch-trackers?callback=jQuery111005268222517967478_1400862512407&ids%5B%5D=t3_25jzeq-t8_k2ii&_=1400862512408 HTTP/1.1
|
||||
Host: tracker.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: */*
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /ados?t=1400862512892&request={%22Placements%22:[{%22A%22:5146,%22S%22:24950,%22D%22:%22main%22,%22AT%22:5},{%22A%22:5146,%22S%22:24950,%22D%22:%22sponsorship%22,%22AT%22:8}],%22Keywords%22:%22-reddit.com%22,%22Referrer%22:%22http%3A%2F%2Fwww.reddit.com%2F%22,%22IsAsync%22:true,%22WriteResults%22:true} HTTP/1.1
|
||||
Host: engine.adzerk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: */*
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads.html?sr=-reddit.com&bust2
|
||||
|
||||
GET /pixel/of_doom.png?id=t3_25jzeq-t8_k2ii&hash=da31d967485cdbd459ce1e9a5dde279fef7fc381&r=1738649500 HTTP/1.1
|
||||
Host: pixel.redditmedia.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /Extensions/adFeedback.js HTTP/1.1
|
||||
Host: static.adzrk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: */*
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads.html?sr=-reddit.com&bust2
|
||||
|
||||
GET /Extensions/adFeedback.css HTTP/1.1
|
||||
Host: static.adzrk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: text/css,*/*;q=0.1
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads.html?sr=-reddit.com&bust2
|
||||
|
||||
GET /reddit/ads-load.html?bust2 HTTP/1.1
|
||||
Host: static.adzerk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://www.reddit.com/
|
||||
|
||||
GET /Advertisers/a774d7d6148046efa89403a8db635a81.jpg HTTP/1.1
|
||||
Host: static.adzerk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads.html?sr=-reddit.com&bust2
|
||||
|
||||
GET /i.gif?e=eyJhdiI6NjIzNTcsImF0Ijo1LCJjbSI6MTE2MzUxLCJjaCI6Nzk4NCwiY3IiOjMzNzAxNSwiZGkiOiI4NmI2Y2UzYWM5NDM0MjhkOTk2ZTg4MjYwZDE5ZTE1YyIsImRtIjoxLCJmYyI6NDE2MTI4LCJmbCI6MjEwNDY0LCJrdyI6Ii1yZWRkaXQuY29tIiwibWsiOiItcmVkZGl0LmNvbSIsIm53Ijo1MTQ2LCJwYyI6MCwicHIiOjIwMzYyLCJydCI6MSwicmYiOiJodHRwOi8vd3d3LnJlZGRpdC5jb20vIiwic3QiOjI0OTUwLCJ1ayI6InVlMS01ZWIwOGFlZWQ5YTc0MDFjOTE5NWNiOTMzZWI3Yzk2NiIsInRzIjoxNDAwODYyNTkzNjQ1fQ&s=lwlbFf2Uywt7zVBFRj_qXXu7msY HTTP/1.1
|
||||
Host: engine.adzerk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads.html?sr=-reddit.com&bust2
|
||||
Cookie: azk=ue1-5eb08aeed9a7401c9195cb933eb7c966
|
||||
|
||||
GET /BurstingPipe/adServer.bs?cn=tf&c=19&mc=imp&pli=9994987&PluID=0&ord=1400862593644&rtu=-1 HTTP/1.1
|
||||
Host: bs.serving-sys.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads.html?sr=-reddit.com&bust2
|
||||
|
||||
GET /Advertisers/63cfd0044ffd49c0a71a6626f7a1d8f0.jpg HTTP/1.1
|
||||
Host: static.adzerk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads-load.html?bust2
|
||||
|
||||
GET /BurstingPipe/adServer.bs?cn=tf&c=19&mc=imp&pli=9962555&PluID=0&ord=1400862593645&rtu=-1 HTTP/1.1
|
||||
Host: bs.serving-sys.com
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads-load.html?bust2
|
||||
Cookie: S_9994987=6754579095859875029; A4=01fmFvgRnI09SF00000; u2=d1263d39-874b-4a89-86cd-a2ab0860ed4e3Zl040
|
||||
|
||||
GET /i.gif?e=eyJhdiI6NjIzNTcsImF0Ijo4LCJjbSI6MTE2MzUxLCJjaCI6Nzk4NCwiY3IiOjMzNzAxOCwiZGkiOiI3OTdlZjU3OWQ5NjE0ODdiODYyMGMyMGJkOTE4YzNiMSIsImRtIjoxLCJmYyI6NDE2MTMxLCJmbCI6MjEwNDY0LCJrdyI6Ii1yZWRkaXQuY29tIiwibWsiOiItcmVkZGl0LmNvbSIsIm53Ijo1MTQ2LCJwYyI6MCwicHIiOjIwMzYyLCJydCI6MSwicmYiOiJodHRwOi8vd3d3LnJlZGRpdC5jb20vIiwic3QiOjI0OTUwLCJ1ayI6InVlMS01ZWIwOGFlZWQ5YTc0MDFjOTE5NWNiOTMzZWI3Yzk2NiIsInRzIjoxNDAwODYyNTkzNjQ2fQ&s=OjzxzXAgQksbdQOHNm-bjZcnZPA HTTP/1.1
|
||||
Host: engine.adzerk.net
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
|
||||
Accept: image/png,image/*;q=0.8,*/*;q=0.5
|
||||
Accept-Language: en-us,en;q=0.5
|
||||
Accept-Encoding: gzip, deflate
|
||||
Connection: keep-alive
|
||||
Referer: http://static.adzerk.net/reddit/ads-load.html?bust2
|
||||
Cookie: azk=ue1-5eb08aeed9a7401c9195cb933eb7c966
|
||||
|
||||
GET /subscribe?host_int=1042356184&ns_map=571794054_374233948806,464381511_13349283399&user_id=245722467&nid=1399334269710011966&ts=1400862514 HTTP/1.1
|
||||
Host: notify8.dropbox.com
|
||||
Accept-Encoding: identity
|
||||
Connection: keep-alive
|
||||
X-Dropbox-Locale: en_US
|
||||
User-Agent: DropboxDesktopClient/2.7.54 (Macintosh; 10.8; ('i32',); en_US)
|
||||
|
||||
40
unikernel/duniverse/ocaml-re/benchmarks/http.ml
Normal file
40
unikernel/duniverse/ocaml-re/benchmarks/http.ml
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
open Re
|
||||
|
||||
let space = rep blank
|
||||
let crlf = str "\r\n"
|
||||
let token = rep1 @@ compl [ rg '\000' '\031'; set "\127)(<>@,;:\\/[]?={}" ]
|
||||
let meth = token
|
||||
|
||||
let version =
|
||||
let digits = rep1 digit in
|
||||
let decimal = seq [ digits; opt (seq [ char '.'; digits ]) ] in
|
||||
seq [ str "HTTP/"; decimal ]
|
||||
;;
|
||||
|
||||
let uri = rep1 (compl [ char '\n' ])
|
||||
let request_line = [ space; group meth; space; group uri; group version; space ] |> seq
|
||||
|
||||
let header =
|
||||
let key = group (rep1 (Re.compl [ char ':' ])) in
|
||||
let value = group (rep1 (Re.compl [ char '\n' ])) in
|
||||
seq [ space; key; space; char ':'; space; value; space; crlf ]
|
||||
;;
|
||||
|
||||
let request' = seq [ request_line; crlf; rep header; crlf ]
|
||||
|
||||
module Export = struct
|
||||
let request = request'
|
||||
let request_g = request' |> no_group
|
||||
let requests = request' |> rep1
|
||||
let requests_g = request' |> no_group |> rep1
|
||||
end
|
||||
|
||||
let requests = Stdio.In_channel.read_all "benchmarks/http-requests.txt"
|
||||
|
||||
let rec read_all pos re reqs =
|
||||
if pos < String.length reqs
|
||||
then (
|
||||
let g = Re.exec ~pos re reqs in
|
||||
let _, pos = Re.Group.offset g 0 in
|
||||
read_all (pos + 1) re reqs)
|
||||
;;
|
||||
31
unikernel/duniverse/ocaml-re/benchmarks/memory.ml
Normal file
31
unikernel/duniverse/ocaml-re/benchmarks/memory.ml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
open Core
|
||||
(* This set of benchmarks is designed for testing re's memory usage rather than
|
||||
speed. *)
|
||||
|
||||
module Bench = Core_bench.Bench
|
||||
|
||||
let size = 1_000
|
||||
|
||||
(* a pathological re that will consume a bunch of memory *)
|
||||
let re () =
|
||||
let open Re in
|
||||
compile @@ seq [ rep (set "01"); char '1'; repn (set "01") size (Some size) ]
|
||||
;;
|
||||
|
||||
(* Another pathological case that is a simplified version of the above *)
|
||||
let re2 () =
|
||||
let open Re in
|
||||
seq [ rep (set "01"); char '1'; repn (set "01") size (Some size); char 'x' ] |> compile
|
||||
;;
|
||||
|
||||
let str = "01" ^ String.make size '1'
|
||||
|
||||
let benchmarks =
|
||||
[ "memory 1", re; "memory 2", re2 ]
|
||||
|> ListLabels.map ~f:(fun (name, re) ->
|
||||
Bench.Test.create_indexed ~name ~args:[ 10; 20; 40; 80; 100; size ] (fun len ->
|
||||
Staged.stage (fun () ->
|
||||
let re = re () in
|
||||
let len = Int.min (String.length str) len in
|
||||
ignore (Re.execp ~pos:0 ~len re str))))
|
||||
;;
|
||||
1
unikernel/duniverse/ocaml-re/benchmarks/memory.mli
Normal file
1
unikernel/duniverse/ocaml-re/benchmarks/memory.mli
Normal file
|
|
@ -0,0 +1 @@
|
|||
val benchmarks : Core_bench.Bench.Test.t list
|
||||
194
unikernel/duniverse/ocaml-re/benchmarks/tex.gitignore
Normal file
194
unikernel/duniverse/ocaml-re/benchmarks/tex.gitignore
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
## Core latex/pdflatex auxiliary files:
|
||||
*.aux
|
||||
*.lof
|
||||
*.log
|
||||
*.lot
|
||||
*.fls
|
||||
*.out
|
||||
*.toc
|
||||
*.fmt
|
||||
*.fot
|
||||
*.cb
|
||||
*.cb2
|
||||
|
||||
## Intermediate documents:
|
||||
*.dvi
|
||||
*-converted-to.*
|
||||
# these rules might exclude image files for figures etc.
|
||||
# *.ps
|
||||
# *.eps
|
||||
# *.pdf
|
||||
|
||||
## Generated if empty string is given at "Please type another file name for output:"
|
||||
.pdf
|
||||
|
||||
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
||||
*.bbl
|
||||
*.bcf
|
||||
*.blg
|
||||
*-blx.aux
|
||||
*-blx.bib
|
||||
*.brf
|
||||
*.run.xml
|
||||
|
||||
## Build tool auxiliary files:
|
||||
*.fdb_latexmk
|
||||
*.synctex
|
||||
*.synctex(busy)
|
||||
*.synctex.gz
|
||||
*.synctex.gz(busy)
|
||||
*.pdfsync
|
||||
|
||||
## Auxiliary and intermediate files from other packages:
|
||||
# algorithms
|
||||
*.alg
|
||||
*.loa
|
||||
|
||||
# achemso
|
||||
acs-*.bib
|
||||
|
||||
# amsthm
|
||||
*.thm
|
||||
|
||||
# beamer
|
||||
*.nav
|
||||
*.snm
|
||||
*.vrb
|
||||
|
||||
# cprotect
|
||||
*.cpt
|
||||
|
||||
# fixme
|
||||
*.lox
|
||||
|
||||
#(r)(e)ledmac/(r)(e)ledpar
|
||||
*.end
|
||||
*.?end
|
||||
*.[1-9]
|
||||
*.[1-9][0-9]
|
||||
*.[1-9][0-9][0-9]
|
||||
*.[1-9]R
|
||||
*.[1-9][0-9]R
|
||||
*.[1-9][0-9][0-9]R
|
||||
*.eledsec[1-9]
|
||||
*.eledsec[1-9]R
|
||||
*.eledsec[1-9][0-9]
|
||||
*.eledsec[1-9][0-9]R
|
||||
*.eledsec[1-9][0-9][0-9]
|
||||
*.eledsec[1-9][0-9][0-9]R
|
||||
|
||||
# glossaries
|
||||
*.acn
|
||||
*.acr
|
||||
*.glg
|
||||
*.glo
|
||||
*.gls
|
||||
*.glsdefs
|
||||
|
||||
# gnuplottex
|
||||
*-gnuplottex-*
|
||||
|
||||
# gregoriotex
|
||||
*.gaux
|
||||
*.gtex
|
||||
|
||||
# hyperref
|
||||
*.brf
|
||||
|
||||
# knitr
|
||||
*-concordance.tex
|
||||
# TODO Comment the next line if you want to keep your tikz graphics files
|
||||
*.tikz
|
||||
*-tikzDictionary
|
||||
|
||||
# listings
|
||||
*.lol
|
||||
|
||||
# makeidx
|
||||
*.idx
|
||||
*.ilg
|
||||
*.ind
|
||||
*.ist
|
||||
|
||||
# minitoc
|
||||
*.maf
|
||||
*.mlf
|
||||
*.mlt
|
||||
*.mtc
|
||||
*.mtc[0-9]
|
||||
*.mtc[1-9][0-9]
|
||||
|
||||
# minted
|
||||
_minted*
|
||||
*.pyg
|
||||
|
||||
# morewrites
|
||||
*.mw
|
||||
|
||||
# mylatexformat
|
||||
*.fmt
|
||||
|
||||
# nomencl
|
||||
*.nlo
|
||||
|
||||
# sagetex
|
||||
*.sagetex.sage
|
||||
*.sagetex.py
|
||||
*.sagetex.scmd
|
||||
|
||||
# scrwfile
|
||||
*.wrt
|
||||
|
||||
# sympy
|
||||
*.sout
|
||||
*.sympy
|
||||
sympy-plots-for-*.tex/
|
||||
|
||||
# pdfcomment
|
||||
*.upa
|
||||
*.upb
|
||||
|
||||
# pythontex
|
||||
*.pytxcode
|
||||
pythontex-files-*/
|
||||
|
||||
# thmtools
|
||||
*.loe
|
||||
|
||||
# TikZ & PGF
|
||||
*.dpth
|
||||
*.md5
|
||||
*.auxlock
|
||||
|
||||
# todonotes
|
||||
*.tdo
|
||||
|
||||
# easy-todo
|
||||
*.lod
|
||||
|
||||
# xindy
|
||||
*.xdy
|
||||
|
||||
# xypic precompiled matrices
|
||||
*.xyc
|
||||
|
||||
# endfloat
|
||||
*.ttt
|
||||
*.fff
|
||||
|
||||
# Latexian
|
||||
TSWLatexianTemp*
|
||||
|
||||
## Editors:
|
||||
# WinEdt
|
||||
*.bak
|
||||
*.sav
|
||||
|
||||
# Texpad
|
||||
.texpadtmp
|
||||
|
||||
# Kile
|
||||
*.backup
|
||||
|
||||
# KBibTeX
|
||||
*~[0-9]*
|
||||
17
unikernel/duniverse/ocaml-re/benchmarks/tex.ml
Normal file
17
unikernel/duniverse/ocaml-re/benchmarks/tex.ml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
open Core
|
||||
|
||||
let ignore_re =
|
||||
Stdio.In_channel.read_lines "benchmarks/tex.gitignore"
|
||||
|> List.map ~f:(fun s ->
|
||||
match Base.String.lsplit2 s ~on:'#' with
|
||||
| Some (pattern, _comment) -> pattern
|
||||
| None -> s)
|
||||
|> List.filter_map ~f:(fun s ->
|
||||
match Base.String.strip s with
|
||||
| "" -> None
|
||||
| s -> Some s)
|
||||
|> List.map ~f:Re.Glob.glob
|
||||
|> Re.alt
|
||||
;;
|
||||
|
||||
let ignore_filesnames = Stdio.In_channel.read_lines "benchmarks/files"
|
||||
Loading…
Add table
Add a link
Reference in a new issue