Arduino board connected to the Z6 III DC-2 remote shutter port via a DC2-to-2.5mm sub cable, electrically isolated through optocoupler.
Methodology
Audio: My Arduino code triggers the shutter programmatically, at the same time it turns on an Arduino-attached buzzer. An audio of the resulting exposure is captured with my iPhone. I pull the audio into a waveform editor and measure the time between the start of the buzzer and the start of the mechanical curtain sounds.
LED: There are three LEDs on the Arduino board. I turn on all three LEDs before triggering the shutter programmatically, then progressively turn them off:
I turn off the bottom (red) LED after 35ms (milliseconds)
I turn off the center (green) LED after 40ms
I turn off the top (blue) LED after 45ms
By counting the number of lit LEDs in the resulting captured image, the shutter lag including exposure time can be calculated.
Results
Fully-mechanical shutter: 65ms
EFCS: 35ms
Electronic shutter: 38ms
I also measured the minimum pulse duration (width) required to trigger the shutter. It's 160 us (microseconds).