BigFile/Sasquatch #1

Merged
rboullard merged 100 commits from BigFile into Development 2026-09-01 16:32:02 +00:00
6 changed files with 68 additions and 68 deletions
Showing only changes of commit 02e587bf86 - Show all commits
@@ -1,10 +1,8 @@
#include <Engine/Asset/AssetContainer.hpp>
#include <AssetsForBenchmarking/Asset/BenchmarkAsset.hpp>
#include <effolkronium/random.hpp>
#include <benchmark/benchmark.h>
#include <effolkronium/random.hpp>
#include <cstdint>
@@ -35,7 +33,8 @@ void Insert(benchmark::State& state)
state.SetItemsProcessed(state.iterations() * count);
}
BENCHMARK(Insert)->Name("AssetContainer/Insert")->Arg(512)->Arg(8192)->Arg(131072);
BENCHMARK(Insert)->Name("AssetContainer/Insert")->Arg(512)->Arg(8192)->Arg(131'072);
/****************************************************************************************/
@@ -67,7 +66,8 @@ void Get(benchmark::State& state)
state.SetItemsProcessed(state.iterations() * count);
}
BENCHMARK(Get)->Name("AssetContainer/Get")->Arg(512)->Arg(8192)->Arg(131072);
BENCHMARK(Get)->Name("AssetContainer/Get")->Arg(512)->Arg(8192)->Arg(131'072);
/****************************************************************************************/
@@ -97,7 +97,8 @@ void Has(benchmark::State& state)
state.SetItemsProcessed(state.iterations() * count);
}
BENCHMARK(Has)->Name("AssetContainer/Has")->Arg(512)->Arg(8192)->Arg(131072);
BENCHMARK(Has)->Name("AssetContainer/Has")->Arg(512)->Arg(8192)->Arg(131'072);
/****************************************************************************************/
@@ -127,7 +128,8 @@ void AcquireContainerHandle(benchmark::State& state)
state.SetItemsProcessed(state.iterations() * count);
}
BENCHMARK(AcquireContainerHandle)->Name("AssetContainer/AcquireContainerHandle")->Arg(512)->Arg(8192)->Arg(131072);
BENCHMARK(AcquireContainerHandle)->Name("AssetContainer/AcquireContainerHandle")->Arg(512)->Arg(8192)->Arg(131'072);
/****************************************************************************************/
@@ -159,6 +161,7 @@ void Remove(benchmark::State& state)
state.SetItemsProcessed(state.iterations() * count);
}
BENCHMARK(Remove)->Name("AssetContainer/Remove")->Arg(512)->Arg(8192)->Arg(131072);
BENCHMARK(Remove)->Name("AssetContainer/Remove")->Arg(512)->Arg(8192)->Arg(131'072);
#endif
} // namespace Bigfoot
+24 -27
View File
@@ -1,15 +1,13 @@
#include <Engine/BigFile/BigFile.hpp>
#include <AssetsForBenchmarking/Asset/BenchmarkAsset.hpp>
#include <EngineBenchmarks/BigFileInfo_generated.hpp>
#include <System/File.hpp>
#include <System/UUID/UUID.hpp>
#include <AssetsForBenchmarking/Asset/BenchmarkAsset.hpp>
#include <EASTL/vector.h>
#include <effolkronium/random.hpp>
#include <EngineBenchmarks/BigFileInfo_generated.hpp>
#include <benchmark/benchmark.h>
#include <effolkronium/random.hpp>
#include <cstddef>
#include <cstdint>
@@ -84,8 +82,8 @@ BENCHMARK_DEFINE_F(Fixture, GetAssetFlatbuffer)(benchmark::State& state)
for (auto _: state)
{
eastl::optional<eastl::vector<std::byte>> flatbuffer =
m_bigFile.GetAssetFlatbuffer(m_uuids[Random::get<std::size_t>(0, m_uuids.size() - 1)]);
eastl::optional<eastl::vector<std::byte>> flatbuffer = m_bigFile.GetAssetFlatbuffer(
m_uuids[Random::get<std::size_t>(0, m_uuids.size() - 1)]);
benchmark::DoNotOptimize(flatbuffer);
if (flatbuffer.has_value())
@@ -127,12 +125,12 @@ BENCHMARK_DEFINE_F(Fixture, GetAssetFlatbuffers)(benchmark::State& state)
}
BENCHMARK_REGISTER_F(Fixture, GetAssetFlatbuffers)
->Name("BigFile/GetAssetFlatbuffers")
->Arg(1)
->Arg(8)
->Arg(64)
->Arg(512)
->Arg(4096);
->Name("BigFile/GetAssetFlatbuffers")
->Arg(1)
->Arg(8)
->Arg(64)
->Arg(512)
->Arg(4096);
/****************************************************************************************/
@@ -140,8 +138,7 @@ BENCHMARK_DEFINE_F(Fixture, GetAssetMetadata)(benchmark::State& state)
{
for (auto _: state)
{
benchmark::DoNotOptimize(
m_bigFile.GetAssetMetadata(m_uuids[Random::get<std::size_t>(0, m_uuids.size() - 1)]));
benchmark::DoNotOptimize(m_bigFile.GetAssetMetadata(m_uuids[Random::get<std::size_t>(0, m_uuids.size() - 1)]));
}
state.SetItemsProcessed(state.iterations());
@@ -168,12 +165,12 @@ BENCHMARK_DEFINE_F(Fixture, GetAssetMetadatas)(benchmark::State& state)
}
BENCHMARK_REGISTER_F(Fixture, GetAssetMetadatas)
->Name("BigFile/GetAssetMetadatas")
->Arg(1)
->Arg(8)
->Arg(64)
->Arg(512)
->Arg(4096);
->Name("BigFile/GetAssetMetadatas")
->Arg(1)
->Arg(8)
->Arg(64)
->Arg(512)
->Arg(4096);
/****************************************************************************************/
@@ -243,11 +240,11 @@ BENCHMARK_DEFINE_F(Fixture, SaveAssetFlatbuffers)(benchmark::State& state)
}
BENCHMARK_REGISTER_F(Fixture, SaveAssetFlatbuffers)
->Name("BigFile/SaveAssetFlatbuffers")
->Arg(1)
->Arg(8)
->Arg(64)
->Arg(512)
->Arg(4096);
->Name("BigFile/SaveAssetFlatbuffers")
->Arg(1)
->Arg(8)
->Arg(64)
->Arg(512)
->Arg(4096);
#endif
} // namespace Bigfoot
@@ -1,10 +1,9 @@
#include <Engine/Asset/AssetLibrary.hpp>
#include <Engine/Asset/Reference.hpp>
#include <Engine/Asset/AssetLibrary.hpp>
#include <AssetsForBenchmarking/Asset/BenchmarkAsset.hpp>
#include <EASTL/vector.h>
#include <benchmark/benchmark.h>
#include <cstddef>
@@ -32,6 +31,7 @@ void Construct(benchmark::State& state)
state.SetItemsProcessed(state.iterations());
}
BENCHMARK_TEMPLATE(Construct, HardReference)->Name("Reference/HardReference/Construct");
BENCHMARK_TEMPLATE(Construct, SoftReference)->Name("Reference/SoftReference/Construct");
@@ -57,6 +57,7 @@ void Get(benchmark::State& state)
state.SetItemsProcessed(state.iterations());
}
BENCHMARK_TEMPLATE(Get, HardReference)->Name("Reference/HardReference/Get");
BENCHMARK_TEMPLATE(Get, SoftReference)->Name("Reference/SoftReference/Get");
@@ -83,6 +84,7 @@ void Copy(benchmark::State& state)
state.SetItemsProcessed(state.iterations());
}
BENCHMARK_TEMPLATE(Copy, HardReference)->Name("Reference/HardReference/Copy");
BENCHMARK_TEMPLATE(Copy, SoftReference)->Name("Reference/SoftReference/Copy");
@@ -122,6 +124,7 @@ void Move(benchmark::State& state)
state.SetItemsProcessed(state.iterations() * BATCH_SIZE);
}
BENCHMARK_TEMPLATE(Move, HardReference)->Name("Reference/HardReference/Move");
BENCHMARK_TEMPLATE(Move, SoftReference)->Name("Reference/SoftReference/Move");
#endif
+10 -9
View File
@@ -264,8 +264,9 @@ void BigFile::SaveAssetFlatbuffers(const eastl::span<const AssetMetadata> p_meta
BeginTransaction();
constexpr std::size_t METADATA_PARAMS_PER_ROW = 4;
const std::size_t maxRowsPerStatement =
static_cast<std::size_t>(sqlite3_limit(m_db, SQLITE_LIMIT_VARIABLE_NUMBER, -1)) / METADATA_PARAMS_PER_ROW;
const std::size_t maxRowsPerStatement = static_cast<std::size_t>(
sqlite3_limit(m_db, SQLITE_LIMIT_VARIABLE_NUMBER, -1)) /
METADATA_PARAMS_PER_ROW;
for (std::size_t chunkStart = 0; chunkStart < p_metadatas.size(); chunkStart += maxRowsPerStatement)
{
@@ -282,11 +283,11 @@ void BigFile::SaveAssetFlatbuffers(const eastl::span<const AssetMetadata> p_meta
metadataPlaceholders += "(?, ?, ?, ?)";
}
const std::string metadataSQL =
fmt::format("INSERT INTO AssetMetadata (UUID, Name, TypeID, TypeName) VALUES {} "
"ON CONFLICT(UUID) DO UPDATE SET Name = excluded.Name, TypeID = excluded.TypeID, TypeName = "
"excluded.TypeName;",
metadataPlaceholders);
const std::string metadataSQL = fmt::format(
"INSERT INTO AssetMetadata (UUID, Name, TypeID, TypeName) VALUES {} "
"ON CONFLICT(UUID) DO UPDATE SET Name = excluded.Name, TypeID = excluded.TypeID, TypeName = "
"excluded.TypeName;",
metadataPlaceholders);
BigFile::Request metadataRequest {*this, metadataSQL.c_str()};
std::uint32_t metadataBindIndex = 1;
@@ -312,8 +313,8 @@ void BigFile::SaveAssetFlatbuffers(const eastl::span<const AssetMetadata> p_meta
}
const std::string assetSQL = fmt::format(
"INSERT INTO Asset (UUID, Asset) VALUES {} ON CONFLICT(UUID) DO UPDATE SET Asset = excluded.Asset;",
assetPlaceholders);
"INSERT INTO Asset (UUID, Asset) VALUES {} ON CONFLICT(UUID) DO UPDATE SET Asset = excluded.Asset;",
assetPlaceholders);
BigFile::Request assetRequest {*this, assetSQL.c_str()};
std::uint32_t assetBindIndex = 1;
@@ -6,11 +6,10 @@
*********************************************************************/
#ifndef BIGFOOT_SYSTEM_UUID_UUID_HPP
#define BIGFOOT_SYSTEM_UUID_UUID_HPP
#include <ankerl/unordered_dense.h>
#include <fmt/format.h>
#include <uuid.h>
#include <ankerl/unordered_dense.h>
namespace Bigfoot
{
class UUID
+16 -19
View File
@@ -270,15 +270,14 @@ TEST_F(BigFileFixture, SaveAssetFlatbuffers_ShouldSaveTheAssets)
assetB.SetName("world");
assetB.GetAsset().health = 7;
const eastl::vector<AssetMetadata> metadatas {
AssetMetadata {.m_uuid = assetA.GetHeader().uuid,
.m_name = assetA.GetHeader().name,
.m_typeID = assetA.GetHeader().type_id,
.m_typeName = assetA.GetHeader().type_name},
AssetMetadata {.m_uuid = assetB.GetHeader().uuid,
.m_name = assetB.GetHeader().name,
.m_typeID = assetB.GetHeader().type_id,
.m_typeName = assetB.GetHeader().type_name}};
const eastl::vector<AssetMetadata> metadatas {AssetMetadata {.m_uuid = assetA.GetHeader().uuid,
.m_name = assetA.GetHeader().name,
.m_typeID = assetA.GetHeader().type_id,
.m_typeName = assetA.GetHeader().type_name},
AssetMetadata {.m_uuid = assetB.GetHeader().uuid,
.m_name = assetB.GetHeader().name,
.m_typeID = assetB.GetHeader().type_id,
.m_typeName = assetB.GetHeader().type_name}};
const eastl::vector<eastl::vector<std::byte>> flatbuffers {assetA.Pack(), assetB.Pack()};
m_bigFile.SaveAssetFlatbuffers(metadatas, flatbuffers);
@@ -295,11 +294,10 @@ TEST_F(BigFileFixture, SaveAssetFlatbuffers_ShouldUpdateTheDataWhenCalledTwice)
AssetA asset;
asset.GetAsset().health = 1;
const eastl::vector<AssetMetadata> metadatas1 {
AssetMetadata {.m_uuid = uuid,
.m_name = "hello",
.m_typeID = AssetA::GetTypeID(),
.m_typeName = eastl::string {AssetA::GetTypeName()}}};
const eastl::vector<AssetMetadata> metadatas1 {AssetMetadata {.m_uuid = uuid,
.m_name = "hello",
.m_typeID = AssetA::GetTypeID(),
.m_typeName = eastl::string {AssetA::GetTypeName()}}};
const eastl::vector<eastl::vector<std::byte>> flatbuffers1 {asset.Pack()};
m_bigFile.SaveAssetFlatbuffers(metadatas1, flatbuffers1);
@@ -318,11 +316,10 @@ TEST_F(BigFileFixture, SaveAssetFlatbuffers_ShouldUpdateTheDataWhenCalledTwice)
std::this_thread::sleep_for(std::chrono::milliseconds(20));
asset.GetAsset().health = 2;
const eastl::vector<AssetMetadata> metadatas2 {
AssetMetadata {.m_uuid = uuid,
.m_name = "world",
.m_typeID = AssetA::GetTypeID(),
.m_typeName = eastl::string {AssetA::GetTypeName()}}};
const eastl::vector<AssetMetadata> metadatas2 {AssetMetadata {.m_uuid = uuid,
.m_name = "world",
.m_typeID = AssetA::GetTypeID(),
.m_typeName = eastl::string {AssetA::GetTypeName()}}};
const eastl::vector<eastl::vector<std::byte>> flatbuffers2 {asset.Pack()};
m_bigFile.SaveAssetFlatbuffers(metadatas2, flatbuffers2);