Cisco began experimenting with routing protocols that would make best route selections based on variable parameters like link load and bandwidth. EIGRP was the first attempt at this and is where the K values came from. Cisco eventually came out with Optimized Edge Routing (OER) which gave us the capability to perform prefix-based route optimizations.
OER in its first iteration was limited with how it could optimally route traffic. The criteria used to manipulate traffic was limited, OER relied on packet loss, response time, path availability and traffic load distribution to make routing decisions.
Modern networks needed more than prefix based route optimizations, they also needed application specific needs to be accounted for and so Performance Routing was created.
PfR was built using OERs foundation and extended its capabilities to include criteria based on application type, application performance requirements, in addition to the traditional network performance criteria.