It's not about being cold blooded. It's a function of the job and what's best for the team. Better to get them out early than let them bring everyone down then let them go.
In order of importance a manager should put the company first, then team, then individual employees, then themselves. Poor performers hurt everyone on that list.
Most of the time the under-performer will be happier after any of these scenarios than they would knowing they're under-performing in their current role. It just takes a bit of time and maturity to realize.