Use GEOM_NOP to collect write statistics.
First, create test partition (/dev/ada0s1f for example). 1GB is enough to run the test.
Then, assuming "make buildworld" already done and obj is populated:
kldload geom_nop
dev=/dev/ada0s1f
gnop create $dev
mkdir /data
r=260000
newfs -r $r -m 0 -o space $dev.nop
mount $dev.nop /data
mkdir /data/tmp /data/world
rm -rf /tmp && ln -s /data/tmp /tmp
cd /usr/src
make DESTDIR=/data/world installworld >/dev/null 2>&1
sync; sync; sync; sleep 3
gnop reset $dev.nop
gnop list > ~/gnop.prev
make DESTDIR=/data/world installworld > ~/installworld.log 2>&1
sync; sync; sync; sleep 3
gnop list > ~/gnop.new
Compare numbers in files gnop.prev (should be zeroes) and gnop.new to calculate amount of data sent to DESTDIR+/tmp during installworld. Run the test with unpatched and patched install(1) to see the difference.
Also, this mtree(8) command ensures that contents of DESTDIR is identical for unpatched and patched install(1) with exception of usr/bin/install binary itself if you use same obj contents for both passes:
mtree -c -k flags,gid,link,mode,nlink,size,type,uid,cksum -p /data/world > mtree.out
Note that install(1) belongs to bootstrap-tools so after patching its sources it is not enough to rebuild the utility but extra steps are required for new code to be used during installworld:
cd /usr/src/usr.bin/install && make clean all install
cd $(find -H /usr/obj -type d -path '*/tmp/*' -name xinstall) && rm xinstall xinstall.o
rm $(find -H /usr/obj -type f -path '*/legacy/*' -name install)
cd /usr/src && make _bootstrap-tools