Как Ускорить выполнение функции вызвоной по укозателю?
Вызов функции всегда несёт большие расходы. При каждом вызове производится выделение памяти в стеке, прыжок, возврат из функции. Эти действия и замедляют выполнение программы. Компилятор Delphi, по-видимому, убрал прыжок и вставил само действие прямо в цикл. Если вы приложите скомпилированные бинарные файлы, я покажу в ассемблерном листинге в чем разница и почему медленно.
Я советую вам собрать приложение в релизном режиме (со всеми необходимыми оптимизациями) и после этого уже профилировать. Профилирование не в релизном режиме не показательно.
Ну и в целом, вам верно ответили, что вызов функции предполагает большие расходы. Другое дело, что компиляторы очень умные и могут много что оптимизировать. Разумеется не всё.