mirror of
https://github.com/GabsPuNs/Project-Zenith-Main.git
synced 2026-07-17 06:30:43 +00:00
155 lines
3.9 KiB
C++
155 lines
3.9 KiB
C++
#include "../Common/TestsInterface.h"
|
|
#include "../Common/TestsShell.h"
|
|
#include <RmlUi/Core/Context.h>
|
|
#include <RmlUi/Core/Element.h>
|
|
#include <RmlUi/Core/ElementDocument.h>
|
|
#include <RmlUi/Core/Factory.h>
|
|
#include <RmlUi/Core/Types.h>
|
|
#include <doctest.h>
|
|
#include <nanobench.h>
|
|
|
|
using namespace ankerl;
|
|
using namespace Rml;
|
|
|
|
static const String document_rml = R"(
|
|
<rml>
|
|
<head>
|
|
<link type="text/template" href="/assets/window.rml"/>
|
|
<title>Benchmark Sample</title>
|
|
<style>
|
|
body.window
|
|
{
|
|
left: 50px;
|
|
top: 50px;
|
|
width: 800px;
|
|
height: 200px;
|
|
}
|
|
#performance
|
|
{
|
|
width: 500px;
|
|
height: 300px;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body template="window">
|
|
<div id="performance">
|
|
<div class="row">
|
|
<div class="col col1"><button class="expand" index="3">+</button> <a>Route 15</a></div>
|
|
<div class="col col23"><input type="range" class="assign_range" min="0" max="20" value="3"/></div>
|
|
<div class="col col4">Assigned</div>
|
|
<select>
|
|
<option>Red</option><option>Blue</option><option selected>Green</option><option style="background-color: yellow;">Yellow</option>
|
|
</select>
|
|
<div class="inrow unmark_collapse">
|
|
<div class="col col123 assign_text">Assign to route</div>
|
|
<div class="col col4">
|
|
<input type="submit" class="vehicle_depot_assign_confirm" quantity="0">Confirm</input>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</rml>
|
|
)";
|
|
|
|
TEST_CASE("elementdocument")
|
|
{
|
|
Context* context = TestsShell::GetContext();
|
|
REQUIRE(context);
|
|
|
|
{
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Show();
|
|
|
|
const String stats = TestsShell::GetRenderStats();
|
|
MESSAGE(stats);
|
|
|
|
TestsShell::RenderLoop();
|
|
document->Close();
|
|
context->Update();
|
|
}
|
|
|
|
{
|
|
nanobench::Bench bench;
|
|
bench.title("ElementDocument");
|
|
bench.timeUnit(std::chrono::microseconds(1), "us");
|
|
bench.relative(true);
|
|
|
|
bench.run("LoadDocument", [&] {
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Close();
|
|
context->Update();
|
|
});
|
|
|
|
bench.run("LoadDocument + Show", [&] {
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Show();
|
|
document->Close();
|
|
context->Update();
|
|
});
|
|
|
|
bench.run("LoadDocument + Show + Update", [&] {
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Show();
|
|
context->Update();
|
|
document->Close();
|
|
context->Update();
|
|
});
|
|
|
|
bench.run("LoadDocument + Show + Update + Render", [&] {
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Show();
|
|
context->Update();
|
|
TestsShell::BeginFrame();
|
|
context->Render();
|
|
TestsShell::PresentFrame();
|
|
document->Close();
|
|
context->Update();
|
|
});
|
|
}
|
|
|
|
{
|
|
nanobench::Bench bench;
|
|
bench.title("ElementDocument w/ClearStyleSheetCache");
|
|
bench.timeUnit(std::chrono::microseconds(1), "us");
|
|
bench.relative(true);
|
|
|
|
bench.run("Clear + LoadDocument", [&] {
|
|
Factory::ClearStyleSheetCache();
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Close();
|
|
context->Update();
|
|
});
|
|
|
|
bench.run("Clear + LoadDocument + Show", [&] {
|
|
Factory::ClearStyleSheetCache();
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Show();
|
|
document->Close();
|
|
context->Update();
|
|
});
|
|
|
|
bench.run("Clear + LoadDocument + Show + Update", [&] {
|
|
Factory::ClearStyleSheetCache();
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Show();
|
|
context->Update();
|
|
document->Close();
|
|
context->Update();
|
|
});
|
|
|
|
bench.run("Clear + LoadDocument + Show + Update + Render", [&] {
|
|
Factory::ClearStyleSheetCache();
|
|
ElementDocument* document = context->LoadDocumentFromMemory(document_rml);
|
|
document->Show();
|
|
context->Update();
|
|
TestsShell::BeginFrame();
|
|
context->Render();
|
|
TestsShell::PresentFrame();
|
|
document->Close();
|
|
context->Update();
|
|
});
|
|
}
|
|
}
|