From 10ed8df8fd020bdedd621102909fc5cbb057d641 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Wed, 20 Sep 2023 16:14:54 +0100 Subject: [PATCH] Add File.stat benchmark --- bench/bench_fstat.ml | 26 ++++++++++++++++++++++++++ bench/main.ml | 1 + 2 files changed, 27 insertions(+) create mode 100644 bench/bench_fstat.ml diff --git a/bench/bench_fstat.ml b/bench/bench_fstat.ml new file mode 100644 index 000000000..ba51dea7d --- /dev/null +++ b/bench/bench_fstat.ml @@ -0,0 +1,26 @@ +open Eio.Std + +let ( / ) = Eio.Path.( / ) + +let n_stat = 100000 + +let run_fiber file = + for _ = 1 to n_stat do + let info = (Eio.File.stat file).kind in + assert (info = `Regular_file) + done + +let run env = + Eio.Path.with_open_out ~create:(`If_missing 0o600) (env#cwd / "test-stat") @@ fun file -> + [1; 10] |> List.map (fun par -> + let t0 = Unix.gettimeofday () in + Switch.run (fun sw -> + for _ = 1 to par do + Fiber.fork ~sw (fun () -> run_fiber file) + done + ); + let t1 = Unix.gettimeofday () in + let stat_per_s = float (n_stat * par) /. (t1 -. t0) in + let label = Printf.sprintf "n=%d fibers=%d" n_stat par in + Metric.create label (`Float stat_per_s) "stat/s" "Call fstat on an open file" + ) diff --git a/bench/main.ml b/bench/main.ml index 707253019..3b15386a4 100644 --- a/bench/main.ml +++ b/bench/main.ml @@ -9,6 +9,7 @@ let benchmarks = [ "Stream", Bench_stream.run; "HTTP", Bench_http.run; "Eio_unix.Fd", Bench_fd.run; + "File.stat", Bench_fstat.run; ] let usage_error () =