difftreelog
ci benchmark against stable release
in: master
4 files changed
flake.nixdiffbeforeafterboth--- a/flake.nix
+++ b/flake.nix
@@ -29,9 +29,28 @@
cargo = rust;
};
};
+ jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {
+ rustPlatform = pkgs.makeRustPlatform {
+ rustc = rust;
+ cargo = rust;
+ };
+ };
benchmarks = pkgs.callPackage ./nix/benchmarks.nix {
- inherit go-jsonnet sjsonnet jsonnet jrsonnet;
+ inherit go-jsonnet sjsonnet jsonnet jrsonnet jrsonnet-release;
+ };
+ benchmarks-quick = pkgs.callPackage ./nix/benchmarks.nix {
+ inherit go-jsonnet sjsonnet jsonnet jrsonnet jrsonnet-release;
+ quick = true;
+ };
+ benchmarks-against-release = pkgs.callPackage ./nix/benchmarks.nix {
+ inherit go-jsonnet sjsonnet jsonnet jrsonnet jrsonnet-release;
+ againstRelease = true;
+ };
+ benchmarks-quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {
+ inherit go-jsonnet sjsonnet jsonnet jrsonnet jrsonnet-release;
+ quick = true;
+ againstRelease = true;
};
};
devShell = pkgs.mkShell {
nix/benchmarks.nixdiffbeforeafterboth--- a/nix/benchmarks.nix
+++ b/nix/benchmarks.nix
@@ -5,11 +5,13 @@
, stdenv
, fetchFromGitHub
, jrsonnet
+, jrsonnet-release
, go-jsonnet
, sjsonnet
, jsonnet
, hyperfine
, quick ? false
+, againstRelease ? false
}:
let
jsonnetBench = fetchFromGitHub {
@@ -53,7 +55,9 @@
${jsonnet-bundler}/bin/jb install
'';
- skipSlow = if quick then "slow benchmark" else "";
+ # Removes outsiders from the output
+ # Useful when comparing performance of different jrsonnet releases
+ skipSlow = if quick then "slow benchmark, but only quick requested" else "";
in
stdenv.mkDerivation {
name = "benchmarks";
@@ -67,7 +71,7 @@
jsonnet
hyperfine
- ];
+ ] ++ (if againstRelease then [ jrsonnet-release ] else [ ]);
installPhase =
let
@@ -89,23 +93,26 @@
echo "> Note: No results for C++, ${skipCpp}" >> $out
echo >> $out
'' else ""}
- echo "<details>" >> $out
- echo "<summary>Source</summary>" >> $out
- echo >> $out
- echo "\`\`\`jsonnet" >> $out
- ${if pathIsGenerator then "echo \"// Generator source\" >> $out" else ""}
- ${if omitSource then "echo \"// Omitted: too large\" >> $out" else "cat ${path} >> $out"}
- echo >> $out
- echo "\`\`\`" >> $out
- echo "</details>" >> $out
- echo >> $out
+ ${if !quick then ''
+ echo "<details>" >> $out
+ echo "<summary>Source</summary>" >> $out
+ echo >> $out
+ echo "\`\`\`jsonnet" >> $out
+ ${if pathIsGenerator then "echo \"// Generator source\" >> $out" else ""}
+ ${if omitSource then "echo \"// Omitted: too large\" >> $out" else "cat ${path} >> $out"}
+ echo >> $out
+ echo "\`\`\`" >> $out
+ echo "</details>" >> $out
+ echo >> $out
+ '' else ""}
path=${path}
${if pathIsGenerator then ''
jrsonnet $path > generated.jsonnet
path=generated.jsonnet
'' else ""}
- hyperfine -N ${if quick then "-r1" else ""} --output=pipe --style=basic --export-markdown result.md \
+ hyperfine -N -w4 --output=pipe --style=basic --export-markdown result.md \
"jrsonnet $path ${if vendor != "" then "-J${vendor}" else ""}" -n "Rust" \
+ ${if againstRelease then "\"jrsonnet-release $path ${if vendor != "" then "-J${vendor}" else ""}\" -n \"Rust (released)\"" else "" } \
${if skipGo == "" then "\"go-jsonnet $path ${if vendor != "" then "-J ${vendor}" else ""}\" -n \"Go\"" else "" } \
${if skipScala == "" then "\"sjsonnet $path ${if vendor != "" then "-J ${vendor}" else ""}\" -n \"Scala\"" else "" } \
${if skipCpp == "" then "\"jsonnet $path ${if vendor != "" then "-J ${vendor}" else ""}\" -n \"C++\"" else "" }
@@ -114,40 +121,42 @@
in
''
touch $out
- cat ${./benchmarks.md} >> $out
- echo >> $out
+ ${if !quick then ''
+ cat ${./benchmarks.md} >> $out
+ echo >> $out
- echo "<details>" >> $out
- echo "<summary>Tested versions</summary>" >> $out
- echo >> $out
- echo Rust: git as $(date +'%d.%m.%Y' -u) >> $out
- echo >> $out
- echo "\`\`\`" >> $out
- jrsonnet --help >> $out
- echo "\`\`\`" >> $out
- echo >> $out
- echo Go: $(go-jsonnet --version) >> $out
- echo >> $out
- echo "\`\`\`" >> $out
- go-jsonnet --help >> $out
- echo "\`\`\`" >> $out
- echo >> $out
- echo C++: $(jsonnet --version) >> $out
- echo >> $out
- echo "\`\`\`" >> $out
- jsonnet --help >> $out
- echo "\`\`\`" >> $out
- echo >> $out
- echo Scala: >> $out
- echo >> $out
- echo "\`\`\`" >> $out
- sjsonnet 2>> $out || true
- echo "\`\`\`" >> $out
- echo >> $out
- echo "</details>" >> $out
- echo >> $out
+ echo "<details>" >> $out
+ echo "<summary>Tested versions</summary>" >> $out
+ echo >> $out
+ echo Rust: git as $(date +'%d.%m.%Y' -u) >> $out
+ echo >> $out
+ echo "\`\`\`" >> $out
+ jrsonnet --help >> $out
+ echo "\`\`\`" >> $out
+ echo >> $out
+ echo Go: $(go-jsonnet --version) >> $out
+ echo >> $out
+ echo "\`\`\`" >> $out
+ go-jsonnet --help >> $out
+ echo "\`\`\`" >> $out
+ echo >> $out
+ echo C++: $(jsonnet --version) >> $out
+ echo >> $out
+ echo "\`\`\`" >> $out
+ jsonnet --help >> $out
+ echo "\`\`\`" >> $out
+ echo >> $out
+ echo Scala: >> $out
+ echo >> $out
+ echo "\`\`\`" >> $out
+ sjsonnet 2>> $out || true
+ echo "\`\`\`" >> $out
+ echo >> $out
+ echo "</details>" >> $out
+ echo >> $out
- echo >> $out
+ echo >> $out
+ '' else ""}
echo "## Real world" >> $out
${mkBench {name = "Graalvm CI"; path = "${graalvmBench}/ci.jsonnet"; skipCpp = "takes longer than a hour";}}
${mkBench {name = "Kube-prometheus manifests"; vendor = "${kubePrometheusBench}/vendor"; path = "${kubePrometheusBench}/example.jsonnet"; skipCpp = skipSlow;}}
nix/jrsonnet-release.nixdiffbeforeafterboth--- a/nix/jrsonnet-release.nix
+++ b/nix/jrsonnet-release.nix
@@ -3,14 +3,15 @@
rustPlatform.buildRustPackage rec {
pname = "jrsonnet";
- version = "5f0f8de9f52f961e2ff162e0a3fd4ca20a275f1d";
+ version = "d32fe45b8ed28fb39b5359a704922922368af1c0";
src = fetchFromGitHub {
owner = "CertainLach";
repo = pname;
rev = version;
- hash = lib.fakeHash;
+ hash = "sha256-R9Xt36bYS5upVDzt8hEifwmfocXpJbIKwvxkoJNEGVc=";
};
+ cargoHash = "sha256-V+KGWeNlUnelofaGzufNPLGDyxazoFrjZ/n391VYYws=";
cargoTestFlags = [ "--package=jrsonnet --features=mimalloc,legacy-this-file" ];
cargoBuildFlags = [ "--package=jrsonnet --features=mimalloc,legacy-this-file" ];
nix/jrsonnet.nixdiffbeforeafterboth20 pname = "jrsonnet";20 pname = "jrsonnet";21 version = "git";21 version = "git";222223 cargoTestFlags = [ "--package=jrsonnet --features=mimalloc,legacy-this-file" ];23 cargoTestFlags = [ "--features=mimalloc,legacy-this-file,nightly" ];24 cargoBuildFlags = [ "--package=jrsonnet --features=mimalloc,legacy-this-file" ];24 cargoBuildFlags = [ "--features=mimalloc,legacy-this-file,nightly" ];252526 buildInputs = [ makeWrapper ];26 buildInputs = [ makeWrapper ];2727