1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 00:33:09 +00:00

Use a std::vector to store searchMoves

A std::set (that is a rb_tree) seems really
overkill to store at most a handful of moves
and nothing in the common case.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2012-04-01 12:26:14 +01:00
parent 72641dcaae
commit 7eb6a488ad
5 changed files with 10 additions and 11 deletions

View file

@ -118,7 +118,7 @@ void benchmark(istringstream& is) {
}
else
{
Threads.start_searching(pos, limits);
Threads.start_searching(pos, limits, vector<Move>());
Threads.wait_for_search_finished();
nodes += Search::RootPosition.nodes_searched();
}

View file

@ -46,7 +46,7 @@ int main(int argc, char* argv[]) {
std::string args;
for (int i = 1; i < argc; i++)
args += std::string(" ") + argv[i];
args += std::string(argv[i]) + " ";
uci_loop(args);
}

View file

@ -429,7 +429,7 @@ void ThreadsManager::wait_for_search_finished() {
// main_loop() so to start a new search, then returns immediately.
void ThreadsManager::start_searching(const Position& pos, const LimitsType& limits,
const std::set<Move>& searchMoves) {
const std::vector<Move>& searchMoves) {
wait_for_search_finished();
SearchTime.restart(); // As early as possible
@ -442,7 +442,7 @@ void ThreadsManager::start_searching(const Position& pos, const LimitsType& limi
RootMoves.clear();
for (MoveList<MV_LEGAL> ml(pos); !ml.end(); ++ml)
if (searchMoves.empty() || searchMoves.count(ml.move()))
if (searchMoves.empty() || count(searchMoves.begin(), searchMoves.end(), ml.move()))
RootMoves.push_back(RootMove(ml.move()));
threads[0]->do_sleep = false;

View file

@ -20,7 +20,6 @@
#if !defined(THREAD_H_INCLUDED)
#define THREAD_H_INCLUDED
#include <set>
#include <vector>
#include "material.h"
@ -126,7 +125,7 @@ public:
void set_timer(int msec);
void wait_for_search_finished();
void start_searching(const Position& pos, const Search::LimitsType& limits,
const std::set<Move>& = std::set<Move>());
const std::vector<Move>& searchMoves);
template <bool Fake>
Value split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value bestValue, Move* bestMove,

View file

@ -212,7 +212,7 @@ namespace {
void go(Position& pos, istringstream& is) {
Search::LimitsType limits;
std::set<Move> searchMoves;
vector<Move> searchMoves;
string token;
while (is >> token)
@ -239,7 +239,7 @@ namespace {
limits.ponder = true;
else if (token == "searchmoves")
while (is >> token)
searchMoves.insert(move_from_uci(pos, token));
searchMoves.push_back(move_from_uci(pos, token));
}
Threads.start_searching(pos, limits, searchMoves);
@ -263,8 +263,8 @@ namespace {
int e = time.elapsed();
std::cout << "\nNodes " << n
<< "\nTime (ms) " << e
<< "\nNodes/second " << int(n / (e / 1000.0)) << std::endl;
cout << "\nNodes " << n
<< "\nTime (ms) " << e
<< "\nNodes/second " << int(n / (e / 1000.0)) << endl;
}
}