Depends on how it is used, and how it is abused/misunderstood by extremists.
Far too often the die-hard advocates of "functional programming" end up taking a decent concept into extremes much akin to Java's "Everything is an object". Making endless pointless extra functions for stuff small enough and simple enough it doesn't warrant a function, and WORSE using a function actually results in slower code!
This is particularly true when recursion is the core of implementation, since you're increasing the stack use, creating memory thrashing, moving extra data around, and just plain creating unnecessary overhead.
But again I learned machine language four decades ago before I ever touched a single high level language, so avoiding stack use and 'far' calls to make faster code is in my blood.
It doesn't help that IMHO so much of this 'functional' code is illegible gibberish that belongs more in a calculus class than in programming. The type of stuff where someone went "you know, C isn't nearly cryptic enough, what can we do to make this code even more obfuscated, but still dupe people into using it?"
I mean, there are some good ideas and sound concepts, but it seems like people are taking it to ridiculous extremes resulting in lousy performance and illegible code.