Before doing any testing make sure that you have verified your Dota install in the Steam client to eliminate the possibility of bad local files affecting things. Check your display drivers to make sure you have everything up-to-date. Also quit Steam and Dota and restart Steam, then restart Dota, then run a test. When running a test make sure to select terrain and weather effects that you want to include in the test as they can affect your performance.
To set up for any test add -console to your Dota launch options as you'll need to use the console to run a test. When invoked the test will gather information on the game, closing the console while running then reopening it. Each test produces a set of FPS results printed in the console. You can use the "clear" console command to remove previous console output if you want to see just the perftest results. Also you can use the "condump" console command to save the current console text to a file, named something like condumpxxx.txt, in your Dota install directory. Web sites like pastebin.com can be used to save a block of text and get a link for posting in comments sections that have restricted posting sizes.
Below are some suggested situations in which to run a perf test. You can choose a different situation but please describe it exactly when posting results (note also that the performance test runs commands marked as cheats so it can't be used in a full game).
Simple performance test:
Start a hero demo of whatever hero you feel like. Click the arrow on the side of the Demo Options panel to hide it. Level up any skill to clear the plus button and pause the game. Then open the console and enter 'exec_async perftest' to run the test.
Local bot game performance test:
Start a bot game from the Play Dota menu. Level up any skill to clear the plus button. Run your hero to the center of the map next to the water and wait for creeps to begin fighting. Pause the game, then open the console and enter 'exec_async perftest' to run the test.
Game watching performance test:
Download a game replay to watch. Pick a specific time in the replay that shows action that you want to test. Do not pause the game in this case as the perf test will automatically rewind the playback for each subtest so that they all test the same section of gameplay. Open the console and enter 'exec_async perftest' to run the test. A replay has the advantage of being able to test live, unpaused game activity in a repeatable way. When doing replay testing be sure to record the match ID and specific time in the replay that was tested.
Interpreting the results
The performance test will give general information about how Dota is running on your machine but usually cannot specifically pinpoint exactly what is causing your performance to be what it is. Here are some suggestions on things to try based on your results.
First verify that Dota is running in the mode that you expect. In the system information at the beginning of the performance test output check these things.
* Check Command Line to make sure you don't have any launch options that you didn't realize were in effect.
* If you're running on Windows make sure the Windows Game DVR shows as disabled.
* Double-check that the Render system is the one you expect it to be.
* Check that the Driver Name indicates the correct GPU for Dota to be running on. If you have a system with hybrid graphics and this shows the integrated graphics you will want to double-check your driver settings to make sure Dota runs on the dedicated GPU for best performance.
* Turn off the network information display unless it is absolutely necessary as it has a small cost.
Once you have ensured that Dota is running in the right mode look at the performance test FPS results. These suggestions may help you increase your FPS in some cases. If you have already customized your settings the results may not offer any additional help.
* If the Half resolution FPS is significantly higher than the Baseline FPS you can reduce the Game Screen Render Quality slider in the Video options to possibly increase your perf.
* If the Reduced drawing FPS is significantly higher than the Baseline FPS you can turn off High Quality Water and set Shadow Quality to medium or off in the Video options to possibly increase your perf.
* If the Particles disabled FPS is higher than the Baseline FPS you can drop the Effects Quality in the Video options to possibly increase your perf.
* If the Game only FPS is significantly higher than the Baseline FPS you can turn off High Quality UI in the Video options to possibly increase your perf.
If you have FPS information, not just test results, from different situations you can compare those against test results to try and identify other factors which may be affecting your perf. For example it is usually not possible to use the perftest in a full game since cheats won't be allowed. However you can still get FPS information while playing and then download the replay of the match. You can run the perftest against the replay to see if your full game FPS is similar to your "User settings" perftest FPS while watching the replay. If the full game is significantly slower than watching a replay of the game your network may be affecting the perf and you might want to check your network settings or try different configurations, such as comparing WiFi to plugging directly into your router. If watching the playback shows the perf issue you're having then networking is probably not the problem and the rest of the perftest results may suggest ways to improve your FPS.
The Dota perftest does not monitor system conditions such as CPU or GPU temperatures, fan speeds or so on. If you have a system that may throttle due to heating during execution of Dota this may affect the results in a way that Dota cannot present. The perftest isn't aware of power profiles or other system configuration options which may affect resources available to Dota and those also may affect performance.
Other possible contributors to performance:
If you have increased the number of chat lines via dota_hud_chat_history_lines this will make chat more expensive.