Micro optimize pretty_pv
authorMarco Costalba <mcostalba@gmail.com>
Mon, 8 Jun 2009 09:52:03 +0000 (10:52 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 8 Jun 2009 09:52:03 +0000 (10:52 +0100)
Creating an History object requires clearing the History tables,
although fast is an useless job in san.cpp where History is used
just as a dummy argument for MovePicker c'tor.

So use a file scoped constant instead of creating a new History()
object each time MovePicker c'tor is called as in move_ambiguity()

This optimizes pretty_pv() through the following calling chain:
pretty_pv() -> line_to_san() -> move_to_san() -> move_ambiguity()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/san.cpp

index 8c26ac0078a5bedaf579c4bc1a7197f6afc22275..fad47f9573a0d63b66b94b32b00c1aa0fcccf39b 100644 (file)
@@ -40,8 +40,6 @@ using std::string;
 
 namespace {
 
 
 namespace {
 
-  /// Types
-
   enum Ambiguity {
     AMBIGUITY_NONE,
     AMBIGUITY_FILE,
   enum Ambiguity {
     AMBIGUITY_NONE,
     AMBIGUITY_FILE,
@@ -49,8 +47,7 @@ namespace {
     AMBIGUITY_BOTH
   };
 
     AMBIGUITY_BOTH
   };
 
-
-  /// Functions
+  const History H; // used as dummy argument for MovePicker c'tor
 
   Ambiguity move_ambiguity(const Position& pos, Move m);
   const string time_string(int milliseconds);
 
   Ambiguity move_ambiguity(const Position& pos, Move m);
   const string time_string(int milliseconds);
@@ -144,7 +141,7 @@ Move move_from_san(const Position& pos, const string& movestr) {
 
   assert(pos.is_ok());
 
 
   assert(pos.is_ok());
 
-  MovePicker mp = MovePicker(pos, false, MOVE_NONE, OnePly, History());
+  MovePicker mp = MovePicker(pos, false, MOVE_NONE, OnePly, H);
 
   // Castling moves
   if (movestr == "O-O-O" || movestr == "O-O-O+")
 
   // Castling moves
   if (movestr == "O-O-O" || movestr == "O-O-O+")
@@ -368,7 +365,7 @@ namespace {
     if (type_of_piece(pc) == KING)
         return AMBIGUITY_NONE;
 
     if (type_of_piece(pc) == KING)
         return AMBIGUITY_NONE;
 
-    MovePicker mp = MovePicker(pos, false, MOVE_NONE, OnePly, History());
+    MovePicker mp = MovePicker(pos, false, MOVE_NONE, OnePly, H);
     Move mv, moveList[8];
 
     int n = 0;
     Move mv, moveList[8];
 
     int n = 0;