(As with OO) depends heavily on implementation, but my 2 cents is that functional doesn't apply as much constraints to optimization.
If a compiler is sophisticated enough a functional program should perform as well as a procedural one that uses a comparable garbage collector. But of course real compilers have shortcomings.
I recommend taking a read at Haskell's wiki performance article[1] to have an understanding of the shortcomings that are specific to Haskell.