Edit: I've gone through the logs for the last 2 years - since the beginning of 2019.
There has been
only one case of empty work generated by my pool in all that time.
The bitcoind debug.log output for that shows:
2019-02-17 00:14:17.702612 CreateNewBlock(): block weight: 812 txs: 0 of 0 fees: 0.00000000 sigops 400
For that entire 2 year period (2019-2020) low work generation sizes:
Txns Count
1 2
2 11
3 14
4 32
This is irrelevant for the topic that we are discussing here, my grandmother knows that the chances of the mempool being empty at any given time are slim to nothing, what we need to know is how long does it take you to download a full block, verify all of its transactions, remove the current transactions from your mempool, and create a new blocktempalet.