Measure avg frame-time per sec
This commit is contained in:
parent
5b05f1e51a
commit
c61b25af57
|
@ -1,4 +1,14 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
#include <PSX/Timer/high_res_timer.hpp>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
namespace Overlay {
|
namespace Overlay {
|
||||||
void mesaure_busy_loop();
|
namespace TimerTest {
|
||||||
|
using TimeStamp = JabyEngine::HighResTime::TimeStamp;
|
||||||
|
|
||||||
|
void mesaure_busy_loop();
|
||||||
|
|
||||||
|
TimeStamp start_measuring();
|
||||||
|
void end_measuring(const TimeStamp& start, size_t data_samples);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,18 +1,40 @@
|
||||||
#include <PSX/Timer/high_res_timer.hpp>
|
#include "../Overlay.hpp"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#pragma GCC warning "Enable this code to verify that high percision counter is still functional"
|
extern "C" void busy_loop(int count);
|
||||||
extern "C" void busy_loop(int count);
|
|
||||||
namespace Overlay {
|
namespace Overlay {
|
||||||
void mesaure_busy_loop() {
|
namespace TimerTest {
|
||||||
static constexpr auto Counts = 500;
|
static size_t avg = 0;
|
||||||
|
static size_t cur_rounds = 0;
|
||||||
JabyEngine::HighResTime::enable();
|
|
||||||
const auto start = JabyEngine::HighResTime::get_time_stamp();
|
void mesaure_busy_loop() {
|
||||||
busy_loop(Counts);
|
static constexpr auto Counts = 500;
|
||||||
const auto end = JabyEngine::HighResTime::get_time_stamp();
|
|
||||||
JabyEngine::HighResTime::disable();
|
JabyEngine::HighResTime::enable();
|
||||||
|
const auto start = JabyEngine::HighResTime::get_time_stamp();
|
||||||
printf("Busy loop of %i took %ims %ins\n", Counts, start.milliseconds_to(end), start.microseconds_to(end));
|
busy_loop(Counts);
|
||||||
}
|
const auto end = JabyEngine::HighResTime::get_time_stamp();
|
||||||
|
JabyEngine::HighResTime::disable();
|
||||||
|
|
||||||
|
printf("Busy loop of %i took %ims %ins\n", Counts, start.milliseconds_to(end), start.microseconds_to(end));
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeStamp start_measuring() {
|
||||||
|
return JabyEngine::HighResTime::get_time_stamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
void end_measuring(const TimeStamp& start, size_t data_samples) {
|
||||||
|
const auto end = JabyEngine::HighResTime::get_time_stamp();
|
||||||
|
|
||||||
|
avg += start.microseconds_to(end);
|
||||||
|
cur_rounds++;
|
||||||
|
if(cur_rounds == data_samples) {
|
||||||
|
printf("AVG Time: %ius\n", avg/cur_rounds);
|
||||||
|
|
||||||
|
avg = 0;
|
||||||
|
cur_rounds = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -5,7 +5,6 @@
|
||||||
#include <PSX/GPU/gpu.hpp>
|
#include <PSX/GPU/gpu.hpp>
|
||||||
#include <PSX/GPU/gpu_primitives.hpp>
|
#include <PSX/GPU/gpu_primitives.hpp>
|
||||||
#include <PSX/Timer/frame_timer.hpp>
|
#include <PSX/Timer/frame_timer.hpp>
|
||||||
#include <PSX/Timer/high_res_timer.hpp>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
using namespace JabyEngine;
|
using namespace JabyEngine;
|
||||||
|
@ -35,28 +34,15 @@ static void render() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
static constexpr size_t MaxRounds = 1;
|
|
||||||
|
|
||||||
size_t avg = 0;
|
|
||||||
size_t cur_rounds = 0;
|
|
||||||
setup();
|
setup();
|
||||||
|
|
||||||
Overlay::mesaure_busy_loop();
|
Overlay::TimerTest::mesaure_busy_loop();
|
||||||
JabyEngine::HighResTime::enable();
|
JabyEngine::HighResTime::enable();
|
||||||
|
|
||||||
while(true) {
|
while(true) {
|
||||||
const auto start = JabyEngine::HighResTime::get_time_stamp();
|
const auto start = Overlay::TimerTest::start_measuring();
|
||||||
update();
|
update();
|
||||||
render();
|
render();
|
||||||
const auto end = JabyEngine::HighResTime::get_time_stamp();
|
Overlay::TimerTest::end_measuring(start, GPU::Display::frames_per_sec);
|
||||||
|
|
||||||
avg += start.microseconds_to(end);
|
|
||||||
cur_rounds++;
|
|
||||||
if(cur_rounds == GPU::Display::frames_per_sec) {
|
|
||||||
printf("AVG Time: %ius\n", avg/MaxRounds);
|
|
||||||
|
|
||||||
avg = 0;
|
|
||||||
cur_rounds = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue