There isn't a fixed answer on how much faster one is than the other (in case you were looking for an answer like: X is 50% faster than Y). There are a lot of factors, and it really depends on how Warcraft 3 handles them.
A direct call should be the fastest. TriggerEvaluate(trig) would be next in line in that list (speed-wise), but remember that this does have the added memory to store the trigger, its conditions, and conditionfuncs. ExecuteFunc("") would be last. I remember running benchmarks a long time ago and ExecuteFunc() would freeze wc3 if executed too many times at once. ExecuteFunc("") has to look through the entire script (unless warcraft 3 stores the functions in a dictionary/hashtable), so its time may vary. But iirc it is one of the slower options.