A UDF called in a SELECT statement, gets called once for each row returned, meaning the recordset is somewhat like a cursor in terms of performance.
If possible, the functionality of the UDF should be included in SELECT statement, particularly if returning a large recordset
(Click on title for link to full original article)