Przeglądaj źródła

test: a couple of extra functions to stress the upcoming changes

Michele Caini 3 lat temu
rodzic
commit
6eb3347a3b
1 zmienionych plików z 47 dodań i 0 usunięć
  1. 47 0
      test/benchmark/benchmark.cpp

+ 47 - 0
test/benchmark/benchmark.cpp

@@ -175,6 +175,22 @@ TEST(Benchmark, EraseMany) {
     timer.elapsed();
 }
 
+TEST(Benchmark, EraseManyMulti) {
+    entt::registry registry;
+    std::vector<entt::entity> entities(1000000);
+    auto view = registry.view<position>();
+
+    std::cout << "Erasing 1000000 components from their entities at once" << std::endl;
+
+    registry.create(entities.begin(), entities.end());
+    registry.insert<position>(entities.begin(), entities.end());
+    registry.insert<velocity>(entities.begin(), entities.end());
+
+    timer timer;
+    registry.erase<position, velocity>(view.begin(), view.end());
+    timer.elapsed();
+}
+
 TEST(Benchmark, Remove) {
     entt::registry registry;
     std::vector<entt::entity> entities(1000000);
@@ -209,6 +225,22 @@ TEST(Benchmark, RemoveMany) {
     timer.elapsed();
 }
 
+TEST(Benchmark, RemoveManyMulti) {
+    entt::registry registry;
+    std::vector<entt::entity> entities(1000000);
+    auto view = registry.view<position>();
+
+    std::cout << "Removing 1000000 components from their entities at once" << std::endl;
+
+    registry.create(entities.begin(), entities.end());
+    registry.insert<position>(entities.begin(), entities.end());
+    registry.insert<velocity>(entities.begin(), entities.end());
+
+    timer timer;
+    registry.remove<position, velocity>(view.begin(), view.end());
+    timer.elapsed();
+}
+
 TEST(Benchmark, Clear) {
     entt::registry registry;
     std::vector<entt::entity> entities(1000000);
@@ -223,6 +255,21 @@ TEST(Benchmark, Clear) {
     timer.elapsed();
 }
 
+TEST(Benchmark, ClearMulti) {
+    entt::registry registry;
+    std::vector<entt::entity> entities(1000000);
+
+    std::cout << "Clearing 1000000 components from their entities" << std::endl;
+
+    registry.create(entities.begin(), entities.end());
+    registry.insert<position>(entities.begin(), entities.end());
+    registry.insert<velocity>(entities.begin(), entities.end());
+
+    timer timer;
+    registry.clear<position, velocity>();
+    timer.elapsed();
+}
+
 TEST(Benchmark, ClearStable) {
     entt::registry registry;
     std::vector<entt::entity> entities(1000000);