I know that this is an old thread, but I concord that External Storage class in very slow comparated to old File api.
For this reason I have to modify my app to copy files from external storage to DirInternal before manage and read line by line.
I comparated it with old api directly on my app that I converted to work with new api, to list files it hangs a device with just 100 files it take about 15-20 seconds. With more files the app enter an indefinite state.
Not only ListFiles is like 10 times slow than old api, but every command is slow.
My app read gcode files and send over USB to a 3D printer, here I can see that it slow down a lot and 3D printer will wait some milliseconds the next gcode line. This absolutely do not happen on old api. For this reason I think I need to copy the file on DirInternal as explained before and next read from that position with old File api.
I will try these suggestions to speed up a bit ListFiles but for sure it cannot be so fast as old api.