Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement a simple benchmarking mode which logs FPS to a file
Very useful to compare performance between two builds, check the impact of a configuration option, etc. FPS log is stored in User/Logs/fps.txt and is reset each time you launch a game. Only enabled if you check the "Log FPS to file" option in your graphics settings. Could be improved a bit: currently logs only every 1s (so you can't really see small variations), maybe output more infos to the fps.txt like average/stddev (but Excel/Libreoffice/Google Docs can compute that easily too).
- Loading branch information
Showing
11 changed files
with
119 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
// Copyright (C) 2003 Dolphin Project. | ||
|
||
// This program is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, version 2.0. | ||
|
||
// This program is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License 2.0 for more details. | ||
|
||
// A copy of the GPL 2.0 should have been included with the program. | ||
// If not, see http://www.gnu.org/licenses/ | ||
|
||
// Official SVN repository and contact information can be found at | ||
// http://code.google.com/p/dolphin-emu/ | ||
|
||
#include "FPSCounter.h" | ||
#include "FileUtil.h" | ||
#include "Timer.h" | ||
#include "VideoConfig.h" | ||
|
||
#define FPS_REFRESH_INTERVAL 1000 | ||
|
||
static unsigned int s_counter = 0; | ||
static unsigned int s_fps = 0; | ||
static unsigned int s_fps_last_counter = 0; | ||
static unsigned long s_last_update_time = 0; | ||
static File::IOFile s_bench_file; | ||
|
||
void InitFPSCounter() | ||
{ | ||
s_counter = s_fps_last_counter = 0; | ||
s_fps = 0; | ||
s_last_update_time = Common::Timer::GetTimeMs(); | ||
|
||
if (s_bench_file.IsOpen()) | ||
s_bench_file.Close(); | ||
} | ||
|
||
static void LogFPSToFile(unsigned long val) | ||
{ | ||
if (!s_bench_file.IsOpen()) | ||
s_bench_file.Open(File::GetUserPath(D_LOGS_IDX) + "fps.txt", "w"); | ||
|
||
char buffer[256]; | ||
snprintf(buffer, 256, "%ld\n", val); | ||
s_bench_file.WriteArray(buffer, strlen(buffer)); | ||
} | ||
|
||
int UpdateFPSCounter() | ||
{ | ||
if (Common::Timer::GetTimeMs() - s_last_update_time >= FPS_REFRESH_INTERVAL) | ||
{ | ||
s_last_update_time = Common::Timer::GetTimeMs(); | ||
s_fps = s_counter - s_fps_last_counter; | ||
s_fps_last_counter = s_counter; | ||
if (g_ActiveConfig.bLogFPSToFile) | ||
LogFPSToFile(s_fps); | ||
} | ||
|
||
s_counter++; | ||
return s_fps; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// Copyright (C) 2003 Dolphin Project. | ||
|
||
// This program is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, version 2.0. | ||
|
||
// This program is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License 2.0 for more details. | ||
|
||
// A copy of the GPL 2.0 should have been included with the program. | ||
// If not, see http://www.gnu.org/licenses/ | ||
|
||
// Official SVN repository and contact information can be found at | ||
// http://code.google.com/p/dolphin-emu/ | ||
|
||
#ifndef _FPS_COUNTER_H_ | ||
#define _FPS_COUNTER_H_ | ||
|
||
// Initializes the FPS counter. | ||
void InitFPSCounter(); | ||
|
||
// Called when a frame is rendered. Returns the value to be displayed on | ||
// screen as the FPS counter (updated every second). | ||
int UpdateFPSCounter(); | ||
|
||
#endif // _FPS_COUNTER_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters