# Chapter 7 lab — reproduce every result in the chapter. # # make iter # iteration start is randomized # make retain # delete/clear retain memory; dropping the map frees it # make bench # clear vs delete, pre-size vs not, lookups # make asm # prove clear and the canonical delete loop share mapclear # make golden # capture reference outputs into ./golden # # Requires Go 1.25. .PHONY: iter retain bench asm golden clean iter: go test -run TestIterationOrder -v . retain: go test -run TestMapRetention -v . bench: go test -bench=. -benchmem -count=10 . asm: @out="$$(go test -c -gcflags='-S' 2>&1)"; \ printf '%s\n' "$$out" | grep -A30 'ClearMap STEXT' | grep -q 'runtime.mapclear'; \ printf '%s\n' "$$out" | grep -A30 'DeleteLoop STEXT' | grep -q 'runtime.mapclear'; \ echo 'ClearMap and DeleteLoop both call runtime.mapclear' golden: @mkdir -p golden go version > golden/go-version.txt go test -run 'TestIterationOrder|TestMapRetention' -v . > golden/behavior.txt 2>&1 go test -bench=. -benchmem -count=10 . | tee golden/bench.txt @echo "wrote golden/{behavior,bench,go-version}.txt" clean: go clean rm -rf golden