Using functions and closures in Swift is efficient and fast. Functions are compiled into optimized code, so calling them has minimal overhead. Closures, especially when capturing variables, can use extra memory because they keep references to those variables. Excessive or complex closures can increase CPU usage and memory, affecting battery life and smoothness.
For smooth UI, keep closures simple and avoid heavy work inside them on the main thread. Functions and closures themselves do not slow frame rates if used properly.