Bluetooth has a lot less bandwidth than WiFi, so it depends on how much data you are trying to transfer.
I do not use WiFi Direct, but I communicate between a phone/tablet and an embedded device that can be configured as its own access point, or to communicate through the WiFi router, so what I am about to say applies to these configurations. I guess that WiFi Direct is probably equivalent to communicating with a device setup as its own access point since there is no other traffic going between the two.
For short packets where latency is important (I use both Bluetooth and WiFi for functions like real time remote control), I have found Bluetooth to be about as good as WiFi, with the advantage that there is no packet fragmentation in Bluetooth (or if there is, I have not seen it). WiFi is unlikely to fragment short packets but it does happen, depending on traffic.
With all the WiFi traffic going on in the background on every modern device, you never have a clear channel, so if you are looking at very short latency, WiFi can have a lot of variability.