slog: improve benchmark handling

Make some improvements to how benchmarks are run, motivated
by the latest benchstat
(https://pkg.go.dev/golang.org/x/perf/cmd/benchstat).

- Run each benchmark 10 times, the minimum recommended in the
  benchstat package doc.

- Use the -ignore flag to benchstat to remove the need to edit
  the "pkg" line in benchmark output.

- Create a Makefile to put all benchmark-running code in one place.
  - Remove all run_benchmarks.sh scripts.
  - Use the same name for each subdirectory's output file to enable
    a single Makefile rule.

Change-Id: Idc6d02ad1bcf10f1a4cd1e1f7f326da9b015ec2a
Reviewed-on: https://go-review.googlesource.com/c/exp/+/463355
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
diff --git a/slog/benchmarks/Makefile b/slog/benchmarks/Makefile
new file mode 100644
index 0000000..1c673c5
--- /dev/null
+++ b/slog/benchmarks/Makefile
@@ -0,0 +1,25 @@
+# Run and compare benchmarks.
+# This requires a version of benchstat that supports
+# the -ignore flag. The flag was added on or before 13 January 2023,
+# so a compatible version can be obtained by running
+#    go install golang.org/x/perf/cmd/benchstat@latest
+
+count = 10
+
+default: compare-zap compare-zerolog
+
+compare-%: %_benchmarks/out.bench slog.bench
+	benchstat -ignore pkg $^
+
+slog.bench: *.go ../*.go ../../go.mod
+	go test -run NONE -bench . -count $(count) > $@
+
+slog-nopc.bench: *.go ../*.go ../../go.mod
+	go test -tags nopc -run NONE -bench . -count $(count) > $@
+
+%_benchmarks/out.bench: %_benchmarks/*.go %_benchmarks/go.mod
+	go test -C $*_benchmarks  -bench . -count $(count) > $@
+
+# Don't delete the out.bench files after a comparison.
+.PRECIOUS: %_benchmarks/out.bench
+
diff --git a/slog/benchmarks/run_benchmarks.sh b/slog/benchmarks/run_benchmarks.sh
deleted file mode 100755
index 5ad72ff..0000000
--- a/slog/benchmarks/run_benchmarks.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash -e
-
-go=${1:-go}
-
-cd $(dirname $0)
-
-set -x
-
-$go test            -bench . -count 5 > slog.bench
-$go test -tags nopc -bench . -count 5 > slog-nopc.bench
diff --git a/slog/benchmarks/slog.bench b/slog/benchmarks/slog.bench
index 080399b..d8423a8 100644
--- a/slog/benchmarks/slog.bench
+++ b/slog/benchmarks/slog.bench
@@ -2,105 +2,205 @@
 goarch: amd64
 pkg: golang.org/x/exp/slog/benchmarks
 cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
-BenchmarkAttrs/disabled/5_args-8  	98892404	        10.48 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args-8  	100000000	        10.62 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args-8  	100000000	        10.73 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args-8  	100000000	        10.92 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args-8  	100000000	        10.66 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args_ctx-8         	100000000	        11.20 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args_ctx-8         	100000000	        11.67 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args_ctx-8         	100000000	        10.89 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args_ctx-8         	100000000	        10.99 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/5_args_ctx-8         	91002250	        11.37 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/10_args-8            	53510887	        19.73 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/10_args-8            	60331378	        19.19 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/10_args-8            	62306692	        19.63 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/10_args-8            	60143833	        19.67 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/10_args-8            	56598145	        19.66 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/40_args-8            	16253622	        69.64 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/40_args-8            	16667188	        70.84 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/40_args-8            	17396628	        68.30 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/40_args-8            	17736950	        71.59 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/disabled/40_args-8            	14518330	        74.08 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args-8        	 3203592	       380.1 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args-8        	 2950881	       371.5 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args-8        	 2910333	       369.4 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args-8        	 3170496	       367.2 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args-8        	 3213660	       349.9 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args_ctx-8    	 3121356	       393.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args_ctx-8    	 3043286	       398.4 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args_ctx-8    	 3094351	       386.8 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args_ctx-8    	 3170066	       395.2 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/5_args_ctx-8    	 2650004	       442.5 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/async_discard/10_args-8       	 1696753	       680.2 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8       	 1376792	       910.2 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8       	 1468706	       827.8 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8       	 1413218	       871.2 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8       	 1348390	       759.4 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8       	  450120	      2591 ns/op	    1408 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8       	  420805	      2736 ns/op	    1408 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8       	  402405	      2684 ns/op	    1408 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8       	  445548	      2540 ns/op	    1408 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8       	  477627	      2574 ns/op	    1408 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8     	 2523033	       507.4 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8     	 2455040	       517.8 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8     	 2762488	       454.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8     	 2667278	       458.4 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8     	 2566798	       493.1 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2534534	       477.8 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2553498	       474.5 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2532687	       474.5 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2619766	       484.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2403781	       492.2 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8    	 1358740	       880.3 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8    	 1286355	       927.4 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8    	 1312178	       876.7 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8    	 1209062	       956.3 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8    	 1315174	       950.8 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8    	  366254	      3571 ns/op	    1413 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8    	  360555	      3643 ns/op	    1413 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8    	  350850	      3678 ns/op	    1413 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8    	  376776	      3411 ns/op	    1412 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8    	  340332	      3419 ns/op	    1413 B/op	       1 allocs/op
-BenchmarkAttrs/Text_discard/5_args-8         	  941372	      1149 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args-8         	  975567	      1164 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args-8         	 1101978	      1238 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args-8         	  980968	      1174 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args-8         	 1000000	      1145 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1107 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1062 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1097755	      1088 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1122 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1232 ns/op	       8 B/op	       2 allocs/op
-BenchmarkAttrs/Text_discard/10_args-8        	  731670	      2231 ns/op	     224 B/op	       5 allocs/op
-BenchmarkAttrs/Text_discard/10_args-8        	  624934	      2126 ns/op	     224 B/op	       5 allocs/op
-BenchmarkAttrs/Text_discard/10_args-8        	  704256	      1790 ns/op	     224 B/op	       5 allocs/op
-BenchmarkAttrs/Text_discard/10_args-8        	  630151	      1879 ns/op	     224 B/op	       5 allocs/op
-BenchmarkAttrs/Text_discard/10_args-8        	  720806	      1856 ns/op	     224 B/op	       5 allocs/op
-BenchmarkAttrs/Text_discard/40_args-8        	  226788	      6160 ns/op	    1477 B/op	      17 allocs/op
-BenchmarkAttrs/Text_discard/40_args-8        	  198184	      5963 ns/op	    1477 B/op	      17 allocs/op
-BenchmarkAttrs/Text_discard/40_args-8        	  205917	      5741 ns/op	    1477 B/op	      17 allocs/op
-BenchmarkAttrs/Text_discard/40_args-8        	  201160	      5746 ns/op	    1477 B/op	      17 allocs/op
-BenchmarkAttrs/Text_discard/40_args-8        	  208953	      6389 ns/op	    1477 B/op	      17 allocs/op
-BenchmarkAttrs/JSON_discard/5_args-8         	 1269580	       931.7 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args-8         	 1347073	       873.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args-8         	 1314978	       918.4 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args-8         	 1272811	       930.2 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args-8         	 1358918	       971.1 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1255411	       851.9 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1356436	       891.0 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1227829	       903.7 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1361992	       896.1 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1324644	       909.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/JSON_discard/10_args-8        	  600196	      1679 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/10_args-8        	  697009	      1689 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/10_args-8        	  729364	      1721 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/10_args-8        	  752677	      1613 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/10_args-8        	  739350	      1463 ns/op	     208 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/40_args-8        	  242408	      5117 ns/op	    1412 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/40_args-8        	  230407	      5000 ns/op	    1412 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/40_args-8        	  254080	      5092 ns/op	    1412 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/40_args-8        	  220143	      4767 ns/op	    1411 B/op	       1 allocs/op
-BenchmarkAttrs/JSON_discard/40_args-8        	  241828	      5076 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	100000000	        10.38 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	100000000	        10.17 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	100000000	        10.09 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	100000000	        10.08 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	100000000	        10.20 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	100000000	        10.02 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	120035740	        10.16 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	120233986	        10.27 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	117988443	        10.02 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args-8  	100000000	        10.06 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	64901528	        18.46 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	65517596	        18.56 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	62191188	        18.61 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	60753042	        19.24 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	62396752	        18.55 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	65066020	        19.71 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	53918031	        19.35 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	61424350	        19.26 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	63099553	        19.27 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/5_args_ctx-8         	62610777	        19.57 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	58835091	        18.60 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	64711941	        18.23 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	65916264	        18.37 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	63195285	        18.69 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	56442674	        18.72 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	62956743	        18.87 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	60827743	        18.35 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	62394498	        18.76 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	64166661	        18.28 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/10_args-8            	65357238	        18.40 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	18569176	        64.25 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	18564842	        64.20 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	18519975	        64.97 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	18786619	        63.57 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	18571372	        66.20 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	17988332	        65.02 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	18360752	        65.41 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	17946436	        66.87 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	17820082	        65.00 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/disabled/40_args-8            	18557458	        65.02 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3620848	       343.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3470655	       354.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3550908	       331.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3509739	       326.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3676604	       326.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3736221	       323.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3723120	       336.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3620608	       335.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3617883	       332.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args-8        	 3652323	       333.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3550478	       335.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3596498	       341.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3258937	       367.0 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3241588	       348.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3493239	       336.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3644119	       330.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3561814	       332.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3554258	       336.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3577270	       334.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/5_args_ctx-8    	 3665946	       330.5 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 1993348	       595.0 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 1946636	       631.1 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 1948170	       589.5 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 2063065	       614.9 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 2100612	       556.1 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 2044090	       582.5 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 2060553	       548.5 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 2056201	       550.1 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 1977146	       532.5 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8       	 1931263	       566.2 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  647122	      2258 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  545836	      2284 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  508528	      2272 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  562800	      2287 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  535436	      2322 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  550000	      2423 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  497152	      2313 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  536480	      2378 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  559452	      2367 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8       	  525532	      2424 ns/op	    1408 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2841034	       437.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2972779	       414.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2803665	       416.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2968459	       408.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2877259	       405.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2946810	       408.0 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2882872	       429.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2821292	       418.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2827576	       414.0 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8     	 2937133	       410.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2855346	       431.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2874630	       448.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2785812	       429.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2832249	       425.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2793758	       431.0 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2835672	       426.0 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2823031	       430.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2754075	       432.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2800448	       439.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args_ctx-8 	 2636191	       438.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1396909	       795.7 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1474057	       850.3 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1462328	       777.6 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1476898	       816.1 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1475731	       758.6 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1446337	       787.0 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1580239	       769.8 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1512943	       751.8 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1632409	       730.6 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8    	 1560541	       772.2 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  468709	      3217 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  358268	      3294 ns/op	    1413 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  356757	      3278 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  407335	      3404 ns/op	    1413 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  341132	      3429 ns/op	    1413 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  347739	      3344 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  383474	      3382 ns/op	    1413 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  357300	      3414 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  365079	      3254 ns/op	    1413 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8    	  384639	      3169 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1000000	      1042 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1000000	      1022 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1267287	       968.3 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1000000	      1011 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1218736	      1008 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1245417	      1008 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1258174	       954.8 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1000000	      1036 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1188182	       973.6 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args-8         	 1223532	       978.3 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1003 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1016 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1203034	       973.9 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1205427	       978.4 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1202929	      1025 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1080 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1005 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1165257	      1027 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	  999788	      1019 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/5_args_ctx-8     	 1000000	      1055 ns/op	       8 B/op	       2 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  698312	      1710 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  682496	      1688 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  730700	      1674 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  746887	      1663 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  763560	      1644 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  750136	      1634 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  707833	      1752 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  753760	      1697 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  712462	      1622 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/10_args-8        	  673885	      1654 ns/op	     224 B/op	       5 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  253814	      5530 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  244048	      5478 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  213270	      5296 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  228202	      5273 ns/op	    1476 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  223803	      5194 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  212857	      5116 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  210901	      5638 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  213262	      5428 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  215106	      5271 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/Text_discard/40_args-8        	  195278	      5372 ns/op	    1477 B/op	      17 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1503031	       758.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1651918	       761.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1497864	       782.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1523539	       801.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1498520	       821.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1426116	       779.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1566673	       794.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1525293	       814.5 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1531303	       790.5 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args-8         	 1573575	       793.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1443855	       790.5 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1439426	       862.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1452058	       814.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1384497	       876.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1309636	       839.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1490181	       813.5 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1449897	       804.7 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1416861	       916.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1533164	       774.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/5_args_ctx-8     	 1461074	       799.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	 1000000	      1351 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	  891554	      1363 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	  946274	      1331 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	  833112	      1324 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	  938376	      1323 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	  949410	      1355 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	  939082	      1435 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	 1000000	      1381 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	  954004	      1406 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/10_args-8        	  910243	      1355 ns/op	     208 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  281059	      4666 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  233239	      5091 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  258936	      4646 ns/op	    1411 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  262107	      5005 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  201921	      5649 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  238518	      5323 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  229134	      5344 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  237520	      5414 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  221271	      5040 ns/op	    1412 B/op	       1 allocs/op
+BenchmarkAttrs/JSON_discard/40_args-8        	  217669	      5238 ns/op	    1412 B/op	       1 allocs/op
 PASS
-ok  	golang.org/x/exp/slog/benchmarks	150.784s
+ok  	golang.org/x/exp/slog/benchmarks	301.806s
diff --git a/slog/benchmarks/zap_benchmarks/out.bench b/slog/benchmarks/zap_benchmarks/out.bench
new file mode 100644
index 0000000..a683c7f
--- /dev/null
+++ b/slog/benchmarks/zap_benchmarks/out.bench
@@ -0,0 +1,66 @@
+goos: linux
+goarch: amd64
+pkg: golang.org/x/exp/slog/benchmarks/zap_benchmarks
+cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
+BenchmarkAttrs/async_discard/5_args-8  	 2909584	       423.5 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2966116	       478.0 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2358548	       502.2 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2951581	       477.6 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2355459	       496.8 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2574444	       503.1 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2329268	       490.8 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2523195	       446.6 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2389597	       526.5 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/5_args-8  	 2332710	       477.4 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1532005	       773.1 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1676757	       679.5 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1644735	       776.9 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1387543	       858.7 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1431322	       789.3 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1504154	       794.2 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1660015	       793.5 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1702724	       698.2 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1532509	       754.9 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/10_args-8 	 1779415	       689.6 ns/op	     640 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  541555	      2489 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  523632	      2538 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  568752	      2435 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  707185	      2132 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  480524	      2411 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  531994	      2376 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  569430	      2535 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  473851	      2190 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  530892	      2151 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/async_discard/40_args-8 	  487734	      2083 ns/op	    2689 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2168425	       553.1 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2224008	       573.1 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2375797	       528.1 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2241901	       536.5 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2338927	       548.0 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2151067	       557.4 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2053158	       564.6 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2223476	       560.4 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2055274	       533.9 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8         	 2221306	       569.5 ns/op	     320 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1200391	       928.6 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1288224	       895.8 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1233352	       920.7 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1226899	       994.6 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1000000	      1067 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1000000	      1135 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1000000	      1012 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1000000	      1009 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1000000	      1072 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8        	 1000000	      1052 ns/op	     641 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  300684	      3884 ns/op	    2698 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  295438	      3894 ns/op	    2699 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  294153	      3694 ns/op	    2699 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  330223	      3749 ns/op	    2699 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  309178	      3832 ns/op	    2699 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  346945	      3405 ns/op	    2697 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  305378	      3818 ns/op	    2698 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  293497	      3749 ns/op	    2698 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  352947	      3676 ns/op	    2698 B/op	       1 allocs/op
+BenchmarkAttrs/fastText_discard/40_args-8        	  301669	      3682 ns/op	    2700 B/op	       1 allocs/op
+PASS
+ok  	golang.org/x/exp/slog/benchmarks/zap_benchmarks	95.928s
diff --git a/slog/benchmarks/zap_benchmarks/run_benchmarks.sh b/slog/benchmarks/zap_benchmarks/run_benchmarks.sh
deleted file mode 100755
index 487f934..0000000
--- a/slog/benchmarks/zap_benchmarks/run_benchmarks.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash -e
-
-go=${1:-go}
-
-cd $(dirname $0)
-
-set -x
-
-# Run all benchmarks a few times and capture to a file.
-$go test -bench . -count 5 > zap.bench
-
-# Rename the package in the output to fool benchstat into comparing
-# these benchmarks with the ones in the parent directory.
-sed -i -e 's?^pkg: .*$?pkg: golang.org/x/exp/slog/benchmarks?' zap.bench
diff --git a/slog/benchmarks/zap_benchmarks/zap.bench b/slog/benchmarks/zap_benchmarks/zap.bench
deleted file mode 100644
index 9268dd1..0000000
--- a/slog/benchmarks/zap_benchmarks/zap.bench
+++ /dev/null
@@ -1,36 +0,0 @@
-goos: linux
-goarch: amd64
-pkg: golang.org/x/exp/slog/benchmarks
-cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
-BenchmarkAttrs/async_discard/5_args-8  	 2967360	       367.3 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/5_args-8  	 3353967	       356.3 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/5_args-8  	 2856321	       388.9 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/5_args-8  	 2827572	       376.6 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/5_args-8  	 3196188	       376.0 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8 	 1770090	       635.4 ns/op	     640 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8 	 2039012	       642.2 ns/op	     640 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8 	 1838562	       622.1 ns/op	     640 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8 	 2066180	       573.6 ns/op	     640 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/10_args-8 	 1905164	       624.8 ns/op	     640 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8 	  604632	      1895 ns/op	    2689 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8 	  614727	      1947 ns/op	    2689 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8 	  547798	      1864 ns/op	    2689 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8 	  580722	      1985 ns/op	    2689 B/op	       1 allocs/op
-BenchmarkAttrs/async_discard/40_args-8 	  657516	      1926 ns/op	    2689 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8         	 2318203	       500.6 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8         	 2275015	       530.1 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8         	 2239497	       533.8 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8         	 2345541	       519.9 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8         	 2377508	       507.7 ns/op	     320 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8        	 1393738	       900.7 ns/op	     641 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8        	 1267099	       880.2 ns/op	     641 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8        	 1383918	       878.0 ns/op	     641 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8        	 1279138	       897.7 ns/op	     641 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8        	 1270694	      1037 ns/op	     641 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8        	  373773	      2888 ns/op	    2697 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8        	  383184	      2929 ns/op	    2698 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8        	  427410	      2986 ns/op	    2698 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8        	  410481	      3023 ns/op	    2698 B/op	       1 allocs/op
-BenchmarkAttrs/fastText_discard/40_args-8        	  426891	      3097 ns/op	    2698 B/op	       1 allocs/op
-PASS
-ok  	golang.org/x/exp/slog/benchmarks/zap_benchmarks	48.330s
diff --git a/slog/benchmarks/zerolog_benchmarks/out.bench b/slog/benchmarks/zerolog_benchmarks/out.bench
new file mode 100644
index 0000000..811276c
--- /dev/null
+++ b/slog/benchmarks/zerolog_benchmarks/out.bench
@@ -0,0 +1,26 @@
+goos: linux
+goarch: amd64
+pkg: golang.org/x/exp/slog/benchmarks/zerolog_benchmarks
+cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
+BenchmarkAttrs/fastText_discard/5_args-8  	 6418659	       189.5 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 6533284	       195.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 5889310	       198.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 6604699	       186.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 6355650	       179.5 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 6616807	       179.7 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 6906835	       183.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 6206449	       184.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 6946840	       180.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/5_args-8  	 6482282	       193.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4138516	       282.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4230062	       278.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4168550	       287.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4263456	       278.1 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4329322	       280.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4063077	       288.9 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4137674	       293.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4281580	       285.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4209427	       300.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkAttrs/fastText_discard/10_args-8 	 4304002	       282.7 ns/op	       0 B/op	       0 allocs/op
+PASS
+ok  	golang.org/x/exp/slog/benchmarks/zerolog_benchmarks	29.079s
diff --git a/slog/benchmarks/zerolog_benchmarks/run_benchmarks.sh b/slog/benchmarks/zerolog_benchmarks/run_benchmarks.sh
deleted file mode 100755
index 428022b..0000000
--- a/slog/benchmarks/zerolog_benchmarks/run_benchmarks.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash -e
-
-go=${1:-go}
-
-cd $(dirname $0)
-
-set -x
-
-# Run all benchmarks a few times and capture to a file.
-$go test -bench . -count 5 > zerolog.bench
-
-# Rename the package in the output to fool benchstat into comparing
-# these benchmarks with the ones in the parent directory.
-sed -i -e 's?^pkg: .*$?pkg: golang.org/x/exp/slog/benchmarks?' zerolog.bench
diff --git a/slog/benchmarks/zerolog_benchmarks/zerolog.bench b/slog/benchmarks/zerolog_benchmarks/zerolog.bench
deleted file mode 100644
index 3a92daf..0000000
--- a/slog/benchmarks/zerolog_benchmarks/zerolog.bench
+++ /dev/null
@@ -1,16 +0,0 @@
-goos: linux
-goarch: amd64
-pkg: golang.org/x/exp/slog/benchmarks
-cpu: Intel(R) Xeon(R) CPU @ 2.20GHz
-BenchmarkAttrs/fastText_discard/5_args-8  	 6696618	       181.9 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8  	 7084600	       175.6 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8  	 6270475	       187.7 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8  	 6545570	       186.5 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/5_args-8  	 6452163	       184.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8 	 4179442	       281.9 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8 	 4376378	       274.7 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8 	 4276617	       285.3 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8 	 4258966	       279.2 ns/op	       0 B/op	       0 allocs/op
-BenchmarkAttrs/fastText_discard/10_args-8 	 3991080	       293.3 ns/op	       0 B/op	       0 allocs/op
-PASS
-ok  	golang.org/x/exp/slog/benchmarks/zerolog_benchmarks	14.421s