mirror of
https://github.com/libretro/easyrpg-libretro.git
synced 2026-11-09 10:59:47 -10:00
49 lines
966 B
C++
49 lines
966 B
C++
#include <benchmark/benchmark.h>
|
|
#include <font.h>
|
|
#include <rect.h>
|
|
#include <bitmap.h>
|
|
#include <sprite.h>
|
|
#include <graphics.h>
|
|
#include <drawable_list.h>
|
|
#include <drawable_mgr.h>
|
|
#include <iostream>
|
|
|
|
constexpr int num_sprites = 5000;
|
|
|
|
class TestSprite : public Drawable {
|
|
public:
|
|
TestSprite() : Drawable(0) { DrawableMgr::Register(this); }
|
|
void Draw(Bitmap&) override {}
|
|
};
|
|
|
|
static void BM_DrawSort(benchmark::State& state) {
|
|
DrawableList list;
|
|
DrawableMgr::SetLocalList(&list);
|
|
|
|
std::vector<std::unique_ptr<TestSprite>> sprites;
|
|
for (int i = 0; i < num_sprites; ++i) {
|
|
sprites.push_back(std::make_unique<TestSprite>());
|
|
}
|
|
|
|
for (auto _: state) {
|
|
list.Sort();
|
|
}
|
|
}
|
|
|
|
BENCHMARK(BM_DrawSort);
|
|
|
|
static void BM_DrawSortLocality(benchmark::State& state) {
|
|
DrawableList list;
|
|
DrawableMgr::SetLocalList(&list);
|
|
|
|
std::array<TestSprite,num_sprites> sprites;
|
|
|
|
for (auto _: state) {
|
|
list.Sort();
|
|
}
|
|
}
|
|
|
|
BENCHMARK(BM_DrawSortLocality);
|
|
|
|
BENCHMARK_MAIN();
|