diff options
author | polwex <polwex@sortug.com> | 2025-10-06 12:31:39 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-10-06 12:31:39 +0700 |
commit | 4a6067863d415e0334b4b61254fab2bd879a6964 (patch) | |
tree | cbeadf65ec17ff6bb28be3cb39307ef38a598b4b /ocaml/test | |
parent | f1de939b8cc592a8d56e62ce36902740a88a7e01 (diff) |
brass!!
Diffstat (limited to 'ocaml/test')
-rw-r--r-- | ocaml/test/dune | 5 | ||||
-rw-r--r-- | ocaml/test/test_brass_cue.ml | 89 |
2 files changed, 94 insertions, 0 deletions
diff --git a/ocaml/test/dune b/ocaml/test/dune index 60ae567..0b43bc8 100644 --- a/ocaml/test/dune +++ b/ocaml/test/dune @@ -148,6 +148,11 @@ (libraries nock_lib eio_main unix)) (executable + (name test_brass_cue) + (modules test_brass_cue) + (libraries nock_lib eio_main unix)) + +(executable (name test_arvo_slots) (modules test_arvo_slots) (libraries nock_lib eio_main unix)) diff --git a/ocaml/test/test_brass_cue.ml b/ocaml/test/test_brass_cue.ml new file mode 100644 index 0000000..0a431cf --- /dev/null +++ b/ocaml/test/test_brass_cue.ml @@ -0,0 +1,89 @@ +(* Test cuing the massive brass/prod pill *) + +open Nock_lib + +let test_brass env = + Printf.printf "š Testing Brass/Prod Pill Cue\n\n"; + + Eio.Switch.run @@ fun _sw -> + let fs = Eio.Stdenv.fs env in + + (* Load brass pill *) + Printf.printf "Loading prod.pill (169 MB - this may take a moment)...\n%!"; + let file_path = Eio.Path.(fs / "prod.pill") in + + let load_start = Unix.gettimeofday () in + let pill_bytes = Eio.Path.load file_path |> Bytes.of_string in + let load_time = Unix.gettimeofday () -. load_start in + + let size_mb = float_of_int (Bytes.length pill_bytes) /. 1024.0 /. 1024.0 in + Printf.printf "ā Loaded %.1f MB in %.2fs\n\n" size_mb load_time; + + (* Cue with progress *) + Printf.printf "Starting cue (this is 20x bigger than solid pill!)...\n%!"; + + let last_tick = ref (Unix.gettimeofday ()) in + let start = Unix.gettimeofday () in + + let progress ~nouns ~bits ~depth ~max_depth = + let now = Unix.gettimeofday () in + if now -. !last_tick >= 1.0 then begin + let mb = float_of_int bits /. 8.0 /. 1024.0 /. 1024.0 in + let pct = (float_of_int bits /. 8.0) /. float_of_int (Bytes.length pill_bytes) *. 100.0 in + let elapsed = now -. start in + let throughput = mb /. elapsed in + Printf.printf " %.1fs | %.1f MB (%.1f%%) | %dk nouns | depth %d/%d | %.2f MB/s\n%!" + elapsed mb pct (nouns / 1000) depth max_depth throughput; + last_tick := now + end + in + + let pill = Serial.cue ~progress ~progress_interval:100_000 pill_bytes in + let elapsed = Unix.gettimeofday () -. start in + + Printf.printf "\nā Cued in %.1fs!\n\n" elapsed; + + let throughput = size_mb /. elapsed in + Printf.printf "Performance:\n"; + Printf.printf " Size: %.1f MB\n" size_mb; + Printf.printf " Time: %.1fs\n" elapsed; + Printf.printf " Throughput: %.2f MB/s\n\n" throughput; + + (* Compare to solid pill *) + let solid_time = 1.2 in + let solid_size = 8.7 in + let size_ratio = size_mb /. solid_size in + let time_ratio = elapsed /. solid_time in + + Printf.printf "Comparison to solid pill:\n"; + Printf.printf " Size ratio: %.1fx bigger\n" size_ratio; + Printf.printf " Time ratio: %.1fx slower\n" time_ratio; + Printf.printf " Scaling: %.1f%% linear\n" ((size_ratio /. time_ratio) *. 100.0); + + if time_ratio <= size_ratio *. 1.2 then + Printf.printf "\nš Excellent scaling! Performance is near-linear!\n" + else + Printf.printf "\nā ļø Non-linear scaling detected\n"; + + (* Check structure *) + Printf.printf "\nExamining structure...\n"; + match pill with + | Noun.Cell (tag, _events) -> + begin match tag with + | Noun.Atom a -> + Printf.printf " Tag: %s (hex: 0x%s)\n" (Z.to_string a) (Z.format "x" a); + if Z.equal a (Z.of_string "1819044208") then + Printf.printf " ā Valid 'llip' tag\n" + | _ -> Printf.printf " Tag: cell\n" + end + | _ -> + Printf.printf " ā Not a cell\n" + +let () = + Printf.printf "\n"; + Printf.printf "āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n"; + Printf.printf " Brass/Prod Pill Cue Test\n"; + Printf.printf "āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n"; + Printf.printf "\n"; + + Eio_main.run test_brass |