diff --git a/test/benchmark.cpp b/test/benchmark.cpp index d0cbce242..ddfbdfbcd 100644 --- a/test/benchmark.cpp +++ b/test/benchmark.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -15,14 +16,8 @@ struct Velocity { uint64_t y; }; -struct Comp1 {}; -struct Comp2 {}; -struct Comp3 {}; -struct Comp4 {}; -struct Comp5 {}; -struct Comp6 {}; -struct Comp7 {}; -struct Comp8 {}; +template +struct Comp {}; struct Timer final { Timer(): start{std::chrono::system_clock::now()} {} @@ -255,26 +250,26 @@ TEST(DefaultRegistry, IterateTwoComponents50M) { } TEST(DefaultRegistry, IterateFiveComponents10M) { - using registry_type = entt::DefaultRegistry; + using registry_type = entt::DefaultRegistry, Comp<2>, Comp<3>>; registry_type registry; std::cout << "Iterating over 10000000 entities, five components" << std::endl; for (uint64_t i = 0; i < 10000000L; i++) { - registry.create(); + registry.create, Comp<2>, Comp<3>>(); } Timer timer; - auto view = registry.view(); + auto view = registry.view, Comp<2>, Comp<3>>(); for(auto entity: view) { auto &position = registry.get(entity); auto &velocity = registry.get(entity); - auto &comp1 = registry.get(entity); - auto &comp2 = registry.get(entity); - auto &comp3 = registry.get(entity); + auto &comp1 = registry.get>(entity); + auto &comp2 = registry.get>(entity); + auto &comp3 = registry.get>(entity); (void)position; (void)velocity; (void)comp1; @@ -287,31 +282,31 @@ TEST(DefaultRegistry, IterateFiveComponents10M) { } TEST(DefaultRegistry, IterateTenComponents10M) { - using registry_type = entt::DefaultRegistry; + using registry_type = entt::DefaultRegistry, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>; registry_type registry; std::cout << "Iterating over 10000000 entities, ten components" << std::endl; for (uint64_t i = 0; i < 10000000L; i++) { - registry.create(); + registry.create, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); } Timer timer; - auto view = registry.view(); + auto view = registry.view, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); for(auto entity: view) { auto &position = registry.get(entity); auto &velocity = registry.get(entity); - auto &comp1 = registry.get(entity); - auto &comp2 = registry.get(entity); - auto &comp3 = registry.get(entity); - auto &comp4 = registry.get(entity); - auto &comp5 = registry.get(entity); - auto &comp6 = registry.get(entity); - auto &comp7 = registry.get(entity); - auto &comp8 = registry.get(entity); + auto &comp1 = registry.get>(entity); + auto &comp2 = registry.get>(entity); + auto &comp3 = registry.get>(entity); + auto &comp4 = registry.get>(entity); + auto &comp5 = registry.get>(entity); + auto &comp6 = registry.get>(entity); + auto &comp7 = registry.get>(entity); + auto &comp8 = registry.get>(entity); (void)position; (void)velocity; (void)comp1; @@ -329,32 +324,32 @@ TEST(DefaultRegistry, IterateTenComponents10M) { } TEST(DefaultRegistry, IterateTenComponents10MHalf) { - using registry_type = entt::DefaultRegistry; + using registry_type = entt::DefaultRegistry, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>; registry_type registry; std::cout << "Iterating over 10000000 entities, ten components, half of the entities have all the components" << std::endl; for (uint64_t i = 0; i < 10000000L; i++) { - auto entity = registry.create(); + auto entity = registry.create, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); if(i % 2) { registry.assign(entity); } } Timer timer; - auto view = registry.view(); + auto view = registry.view, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); for(auto entity: view) { auto &position = registry.get(entity); auto &velocity = registry.get(entity); - auto &comp1 = registry.get(entity); - auto &comp2 = registry.get(entity); - auto &comp3 = registry.get(entity); - auto &comp4 = registry.get(entity); - auto &comp5 = registry.get(entity); - auto &comp6 = registry.get(entity); - auto &comp7 = registry.get(entity); - auto &comp8 = registry.get(entity); + auto &comp1 = registry.get>(entity); + auto &comp2 = registry.get>(entity); + auto &comp3 = registry.get>(entity); + auto &comp4 = registry.get>(entity); + auto &comp5 = registry.get>(entity); + auto &comp6 = registry.get>(entity); + auto &comp7 = registry.get>(entity); + auto &comp8 = registry.get>(entity); (void)position; (void)velocity; (void)comp1; @@ -372,32 +367,32 @@ TEST(DefaultRegistry, IterateTenComponents10MHalf) { } TEST(DefaultRegistry, IterateTenComponents10MOne) { - using registry_type = entt::DefaultRegistry; + using registry_type = entt::DefaultRegistry, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>; registry_type registry; std::cout << "Iterating over 10000000 entities, ten components, only one entity has all the components" << std::endl; for (uint64_t i = 0; i < 10000000L; i++) { - auto entity = registry.create(); + auto entity = registry.create, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); if(i == 5000000L) { registry.assign(entity); } } Timer timer; - auto view = registry.view(); + auto view = registry.view, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); for(auto entity: view) { auto &position = registry.get(entity); auto &velocity = registry.get(entity); - auto &comp1 = registry.get(entity); - auto &comp2 = registry.get(entity); - auto &comp3 = registry.get(entity); - auto &comp4 = registry.get(entity); - auto &comp5 = registry.get(entity); - auto &comp6 = registry.get(entity); - auto &comp7 = registry.get(entity); - auto &comp8 = registry.get(entity); + auto &comp1 = registry.get>(entity); + auto &comp2 = registry.get>(entity); + auto &comp3 = registry.get>(entity); + auto &comp4 = registry.get>(entity); + auto &comp5 = registry.get>(entity); + auto &comp6 = registry.get>(entity); + auto &comp7 = registry.get>(entity); + auto &comp8 = registry.get>(entity); (void)position; (void)velocity; (void)comp1;