The performance problem appears to be due to overhead of the individual disk read calls...
grub2's disk I/O layer buffers 8 disk sectors per read, hard-coded in include/grub/disk.h as GRUB_DISK_CACHE_SIZE.
Increasing GRUB_DISK_CACHE_SIZE to 1024 (patch attached) dramatically improves the load performance for my Intel Tunnel Mountain system booting with UEFI: total load time for linux and initrd is reduced from about 53 seconds to about 1 second.
The performance problem appears to be due to overhead of the individual disk read calls...
grub2's disk I/O layer buffers 8 disk sectors per read, hard-coded in include/grub/disk.h as GRUB_DISK_ CACHE_SIZE.
Increasing GRUB_DISK_ CACHE_SIZE to 1024 (patch attached) dramatically improves the load performance for my Intel Tunnel Mountain system booting with UEFI: total load time for linux and initrd is reduced from about 53 seconds to about 1 second.