Greetings
Load Testing can be achieved depending on the load you need to achieve.
Using TestExecute, which licenses are less expensive, it is mostly a question of transaction rate.
Using the distributed testing capabilities of TestComplete, you can manage to synchronize your transactions between running instances of TestExecute.
Since TestComplete or TestExecute can operate a UI faster than a human, you can achieve a certain transaction rate...
Notice that I'm talking "transaction rate", not concurrent connexions which require more hardware and licenses.
The other aspect of performance that can be achieved is "micro-metrics", meaning, collecting performance metrics at key actions (response time, memory consumption, etc...) on a regular basis and watching for unusual variations in those numbers between builds or software version...
Hope this can be usefull...