024783f535
Change-Id: I6a34622cb0a5dc80f82b64bac8da06f9e1d612d8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12910 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Autosubmit: sterni <sternenseemann@systemli.org>
69 lines
1.8 KiB
Nix
69 lines
1.8 KiB
Nix
{ depot, pkgs, lib, ... }:
|
|
|
|
let
|
|
# Example email that's going to push the parser due to its big attachment
|
|
# of almost 200MB. We are using a GHC bindist since it's quite big and a
|
|
# fixed output derivation that's already part of nixpkgs, so whitby only
|
|
# needs to download it once (and it won't change).
|
|
message = pkgs.runCommand "huge.mime"
|
|
{
|
|
nativeBuildInputs = [ pkgs.buildPackages.mblaze ];
|
|
}
|
|
''
|
|
mmime > $out <<EOF
|
|
Subject: Test message with a big attachment
|
|
|
|
Henlo world!
|
|
|
|
#application/x-xz#base64 ${pkgs.haskell.compiler.ghc963Binary.src}
|
|
EOF
|
|
'';
|
|
|
|
inherit (depot.nix) buildLisp getBins;
|
|
|
|
benchmark-program = buildLisp.program {
|
|
name = "mime4cl-benchmark-program";
|
|
|
|
deps = [
|
|
{
|
|
sbcl = buildLisp.bundled "uiop";
|
|
default = buildLisp.bundled "asdf";
|
|
}
|
|
depot.third_party.lisp.mime4cl
|
|
];
|
|
|
|
srcs = [
|
|
./bench.lisp
|
|
];
|
|
|
|
main = "mime4cl-bench:main";
|
|
};
|
|
|
|
commands = bench: {
|
|
mime4cl-message-parsing = "${bench} parse ${message}";
|
|
mime4cl-attachment-extraction = "${bench} extract ${message}";
|
|
};
|
|
|
|
# TODO(sterni): expose this information from //nix/buildLisp and generate automatically
|
|
lispImplementations = [ "sbcl" /* "ccl" "ecl" */ ];
|
|
in
|
|
|
|
(pkgs.writeShellScriptBin "mime4cl-benchmark" ''
|
|
exec ${pkgs.hyperfine}/bin/hyperfine \
|
|
${
|
|
lib.escapeShellArgs (
|
|
lib.concatMap (impl:
|
|
lib.concatLists (
|
|
lib.mapAttrsToList (name: cmd:
|
|
[ "-n" "${impl}-${name}" cmd ]
|
|
) (commands (let b = benchmark-program.${impl}; in "${b}/bin/${b.name}"))
|
|
)
|
|
) lispImplementations
|
|
)
|
|
} \
|
|
"$@"
|
|
'').overrideAttrs (oldAttrs: {
|
|
passthru = oldAttrs.passthru or { } // {
|
|
inherit benchmark-program;
|
|
};
|
|
})
|