This adds a criterion.rs-based testbench into tvix-glue. It can be invoked by running `cargo bench` from inside the `tvix-glue` crate. `target/criterion/report/index.html` contains nice graphs. It's able to diff against the previous run, so you can invoke `cargo bench` before and after a certain change to reason about the impact in evaluation performance. Currently, we need to create a bunch of Evaluator resources inside the benchmark loop itself, which is a bit annoying, as it leaks into the things we benchmark. This should become better with b/262. Fixes b/322. Change-Id: I91656a308887baa1d459ed54d58baae919a4aaf2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10245 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| # This file is shell.nix in the tvix josh workspace,
 | |
| # *and* used to provide the //tvix:shell attribute in a full depot checkout.
 | |
| # Hence, it may not use depot as a toplevel argument.
 | |
| 
 | |
| {
 | |
|   # This falls back to the tvix josh workspace-provided nixpkgs checkout.
 | |
|   # In the case of depot, it's always set explicitly.
 | |
|   pkgs ? (import ./nixpkgs {
 | |
|     depotOverlays = false;
 | |
|     depot.third_party.sources = import ./sources { };
 | |
|   })
 | |
| , ...
 | |
| }:
 | |
| 
 | |
| pkgs.mkShell {
 | |
|   name = "tvix-rust-dev-env";
 | |
|   packages = [
 | |
|     pkgs.buf-language-server
 | |
|     pkgs.cargo
 | |
|     pkgs.cargo-machete
 | |
|     pkgs.clippy
 | |
|     pkgs.evans
 | |
|     pkgs.fuse
 | |
|     pkgs.go
 | |
|     pkgs.hyperfine
 | |
|     pkgs.nix_2_3 # b/313
 | |
|     pkgs.pkg-config
 | |
|     pkgs.rust-analyzer
 | |
|     pkgs.rustc
 | |
|     pkgs.rustfmt
 | |
|     pkgs.protobuf
 | |
|   ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
 | |
|     # We need these two dependencies in the ambient environment to be able to
 | |
|     # `cargo build` on MacOS.
 | |
|     pkgs.libiconv
 | |
|     pkgs.buildPackages.darwin.apple_sdk.frameworks.Security
 | |
|   ];
 | |
| 
 | |
|   # Set TVIX_BENCH_NIX_PATH to a somewhat pinned nixpkgs path.
 | |
|   # This is for invoking `cargo bench` imperatively on the developer machine.
 | |
|   # For tvix benchmarking across longer periods of time (by CI), we probably
 | |
|   # should also benchmark with a more static nixpkgs checkout, so nixpkgs
 | |
|   # refactorings are not observed as eval perf changes.
 | |
|   shellHook = ''
 | |
|     export TVIX_BENCH_NIX_PATH=nixpkgs=${pkgs.path}
 | |
|   '';
 | |
| }
 |