Back in July of last year, Jeff King (@wb8wka) noticed that there was a problem with ESP.deepSleep() calls using the ESP8266 Arduino Core. Versions greater than 2.0.0 appear to ignore the WAKE_NO_RFCAL flag and the WiFi calibration routine is run every time the ESP wakes, adding around another 200ms to the total start-up time, as well as a corresponding current spike.
Jeff notes that using the Espressif “system_” calls, rather than the Arduino wrapped calls, results in the expected behaviour (that is, no calibration being run), so the problem does seem to be with the Arduino Core and, as of 2.4.0, it is still an issue. Ivan (@igrr) has acknowledged the problem, but so far there is no fix.
So, if you’re using ESP.deepSleep() and your batteries don’t seem to be lasting as long as they used to, you might want to go back to Arduino Core 2.0.0 for building your battery-powered projects.