On Windows this is what happens when requesting completions for the first time:

Notice a lot of time is spent in getCommandsInPath.
The second time is faster but still a lot of time is spent in getCommandsInPath, so caching might not be working properly:

This delay is definitely noticeable as it's 100-200ms just to do the work, there's more overhead of passing the results over ipc.