From 9bf1355e17e7903212d439fe718ae18939466962 Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Wed, 9 Dec 2020 00:16:13 +0100
Subject: [PATCH] Avoid multiprocessing until it's really worth it.

---
 plomrogue/game.py | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/plomrogue/game.py b/plomrogue/game.py
index 3b0b25f..b0233b3 100755
--- a/plomrogue/game.py
+++ b/plomrogue/game.py
@@ -230,7 +230,6 @@ class Game(GameBase):
         """Send out game state data relevant to clients."""
 
         # TODO: limit to connection_id if provided
-        print('DEBUG send_gamestate')
         self.io.send('TURN ' + str(self.turn))
         from plomrogue.mapping import FovMap
         import multiprocessing
@@ -242,15 +241,19 @@ class Game(GameBase):
             player = self.get_player(c_id)
             if player._fov:
                 continue
-            player.prepare_multiprocessible_fov_stencil() #!
+            player.prepare_multiprocessible_fov_stencil()
             player_fovs += [player._fov]
             player_fov_ids += [player.id_]
-            print('DEBUG regen FOV for', player.id_)
-        if len(player_fovs) > 0:
+        new_fovs = []
+        single_core_until = 8  # since multiprocess has its own overhead
+        if len(player_fovs) > single_core_until:
             pool = multiprocessing.Pool()
-            new_fovs = pool.map(FovMap.init_terrain, [fov for fov in player_fovs])  #!
+            new_fovs = pool.map(FovMap.init_terrain, [fov for fov in player_fovs])
             pool.close()
             pool.join()
+        elif len(player_fovs) <= single_core_until:
+            for fov in player_fovs:
+                new_fovs += [fov.init_terrain()]
         for i in range(len(player_fov_ids)):
             id_ = player_fov_ids[i]
             player = self.get_thing(id_)
-- 
2.30.2