Как вычилисть время выполнения функции без прямого исполнения этой же функции?
Время без прямого исполнения - по сути никак. Только сложность. Можете конечно перевести ее в ассемблер, посчитать количество операций, принять что за 1 такт выполняется 1 операция (что тоже является очень грубым допущением) и дальше зная частоту процессора получить время. Но это все будет очень приблизительно. И на практике время выполнения функции будет всегда больше, причем насколько - зависит от множества параметров. Не забудьте еще разные оптимизации, другие более приоритетные вещи в ОС и процессах и т.д.
Время - никак: неизвестно на какой машине, неизвестно на какой ОС,  неизвестно на каком языке.