Depends which shell. You can generally have a number of functions in your .profile which would give you the performance benefit of these being memory resident when you come to use them.
You could also store them in any old file(s) which you could use as a functions library to source (.) into your scripts when you require them.
In addition, in ksh, you can use the autoload feature. This uses the FPATH environment variable to search for files matching the function you have attempted to call. If it finds a matching file name, it assumes this hold the fucntion definition and 'autoloads' it. To turn this functionality on, use typeset -fu.
Damian