Performance Testing of Desktop applications is oxymoron. Desktop application is used by one, at most two persons at a time. So if generating a report takes 5 seconds it will take 5 seconds no matter how many users are pushing the button.
It takes 9 month for a woman to born a baby. 3 women won't produce a baby in 3 month. 0.5 woman won't give you a baby in 18 month.
You can use a tool i.e. Sikuli to automate the process so you won't have to do the same buttons clicking every day for each new build, it will be possible to conditionally fail the test if report generation takes more than 5 seconds.
If your desktop application relies on a backend server(s), i.e. pushing "generate report" button sends the relevant request to the database or any other server via a network protocol, desktop application waits for the response and renders it. In that case you can reveal bottlenecks like "what happens if 500 users request a report at the same moment", but this simulation needs to be done on network level, not in the GUI level.
So in that case you can take any load testing tool which supports that protocol which application uses for talking with its backend and simulate the required load. Modern free, open source multi-protocol testing tools are:
All of them support record-and-replay capabilities at least for HTTP and HTTPS protocols so if your application supports proxy settings you can configure it to use one of the above tools as a proxy and quickly record your load test for later replaying with increased amount of virtual users.
See Open Source Load Testing Tools: Which One Should You Use? for extended information on aforementioned tools.