it could be that your functions are doing more than you think they are.
functions do not know what instances were picked when the function was called, and will therefore apply to all instances, unless you re-pick instances inside the function - which can add a lot of overhead if you have a lot of instances and/or are picking based on time consuming factors.
if you are passing in a UID of an instance, and just running actions on that one instance, then I would not expect any difference in performance by using a function.