diff options
author | Geir Storli <geirst@verizonmedia.com> | 2019-05-06 07:30:22 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2019-05-06 07:30:22 +0000 |
commit | 7e9e16f80db71694de5a0cca1cec871d8792546b (patch) | |
tree | b2883fc610443aa06d5fbc3e6566308d655dadc7 /searchlib/src/tests/postinglistbm | |
parent | b5741ca61fc16612013b438f65b5b4089a2e78a8 (diff) |
Style changes and simplifications.
Diffstat (limited to 'searchlib/src/tests/postinglistbm')
-rw-r--r-- | searchlib/src/tests/postinglistbm/andstress.cpp | 115 | ||||
-rw-r--r-- | searchlib/src/tests/postinglistbm/andstress.h | 26 |
2 files changed, 66 insertions, 75 deletions
diff --git a/searchlib/src/tests/postinglistbm/andstress.cpp b/searchlib/src/tests/postinglistbm/andstress.cpp index 15e56c2d4ef..99c83bd090c 100644 --- a/searchlib/src/tests/postinglistbm/andstress.cpp +++ b/searchlib/src/tests/postinglistbm/andstress.cpp @@ -29,8 +29,7 @@ namespace postinglistbm { class AndStressWorker; -class AndStressMaster -{ +class AndStressMaster { private: AndStressMaster(const AndStressMaster &); @@ -60,9 +59,11 @@ private: uint32_t _numTasks; public: - typedef std::pair<FakePosting *, FakePosting *> Task; + using Task = std::pair<FakePosting *, FakePosting *>; + private: std::vector<Task> _tasks; + public: AndStressMaster(search::Rand48 &rnd, FakeWordSet &wordSet, @@ -91,8 +92,7 @@ public: }; -class AndStressWorker : public FastOS_Runnable -{ +class AndStressWorker : public FastOS_Runnable { private: AndStressWorker(const AndStressWorker &); @@ -107,7 +107,6 @@ public: virtual void Run(FastOS_ThreadInterface *thisThread, void *arg) override; }; - template <class P> FakePosting * makePosting(FakeWord &fw) @@ -115,7 +114,6 @@ makePosting(FakeWord &fw) return new P(fw); } - AndStressMaster::AndStressMaster(search::Rand48 &rnd, FakeWordSet &wordSet, unsigned int numDocs, @@ -134,7 +132,7 @@ AndStressMaster::AndStressMaster(search::Rand48 &rnd, _skipCommonPairsRate(skipCommonPairsRate), _stride(stride), _unpack(unpack), - _threadPool(NULL), + _threadPool(nullptr), _workers(), _workersDone(0), _wordSet(wordSet), @@ -152,35 +150,34 @@ AndStressMaster::AndStressMaster(search::Rand48 &rnd, template <class C> static void -clearPtrVector(std::vector<C> &v) +clearPtrVector(std::vector<C> &vector) { - for (unsigned int i = 0; i < v.size(); ++i) - delete v[i]; - v.clear(); + for (auto& elem : vector) { + delete elem; + } + vector.clear(); } - AndStressMaster::~AndStressMaster() { LOG(info, "AndStressMaster::~AndStressMaster"); _threadPool->Close(); delete _threadPool; - _threadPool = NULL; + _threadPool = nullptr; clearPtrVector(_workers); dropPostings(); } - void AndStressMaster::dropPostings() { - for (unsigned int i = 0; i < _postings.size(); ++i) - _postings[i].clear(); + for (auto& posting : _postings) { + posting.clear(); + } dropTasks(); } - void AndStressMaster::dropTasks() { @@ -188,39 +185,39 @@ AndStressMaster::dropTasks() _taskIdx = 0; } - void AndStressMaster::resetTasks() { _taskIdx = 0; } - static void makeSomePostings(FPFactory *postingFactory, - std::vector<FakeWord *> &w, - std::vector<FakePosting::SP> &p, + std::vector<FakeWord *> &words, + std::vector<FakePosting::SP> &postings, uint32_t stride, bool validate, bool verbose) { - for (unsigned int i = 0; i < w.size(); ++i) { - FakePosting::SP np(postingFactory->make(*w[i])); + for (const auto& word : words) { + auto posting = postingFactory->make(*word); if (validate) { TermFieldMatchData md; TermFieldMatchDataArray tfmda; tfmda.add(&md); - std::unique_ptr<SearchIterator> sb(np->createIterator(tfmda)); - if (np->hasWordPositions()) { - if (stride != 0) - w[i]->validate(sb.get(), tfmda, stride, verbose); - else - w[i]->validate(sb.get(), tfmda, verbose); - } else - w[i]->validate(sb.get(), verbose); + std::unique_ptr<SearchIterator> iterator(posting->createIterator(tfmda)); + if (posting->hasWordPositions()) { + if (stride != 0) { + word->validate(iterator.get(), tfmda, stride, verbose); + } else { + word->validate(iterator.get(), tfmda, verbose); + } + } else { + word->validate(iterator.get(), verbose); + } } - p.push_back(np); + postings.push_back(posting); } } @@ -236,7 +233,7 @@ AndStressMaster::makePostingsHelper(FPFactory *postingFactory, tv.SetNow(); before = tv.Secs(); postingFactory->setup(_wordSet); - for (unsigned int i = 0; i < _wordSet._words.size(); ++i) + for (size_t i = 0; i < _wordSet._words.size(); ++i) makeSomePostings(postingFactory, _wordSet._words[i], _postings[i], _stride, @@ -250,7 +247,6 @@ AndStressMaster::makePostingsHelper(FPFactory *postingFactory, postingFormat.c_str()); } - void AndStressMaster::setupTasks(unsigned int numTasks) { @@ -276,19 +272,19 @@ AndStressMaster::setupTasks(unsigned int numTasks) } } - AndStressMaster::Task * AndStressMaster::getTask() { - Task *result = NULL; + Task *result = nullptr; std::lock_guard<std::mutex> taskGuard(_taskLock); if (_taskIdx < _tasks.size()) { result = &_tasks[_taskIdx]; ++_taskIdx; } else { _workersDone++; - if (_workersDone == _workers.size()) + if (_workersDone == _workers.size()) { _taskCond.notify_all(); + } } return result; } @@ -298,26 +294,22 @@ AndStressMaster::run() { LOG(info, "AndStressMaster::run"); - std::vector<std::string>::const_iterator pti; - std::vector<std::string>::const_iterator ptie = _postingTypes.end() ; - - for (pti = _postingTypes.begin(); pti != ptie; ++pti) { - std::unique_ptr<FPFactory> ff(getFPFactory(*pti, _wordSet.getSchema())); - makePostingsHelper(ff.get(), *pti, true, false); + for (const auto& type : _postingTypes) { + std::unique_ptr<FPFactory> factory(getFPFactory(type, _wordSet.getSchema())); + makePostingsHelper(factory.get(), type, true, false); setupTasks(_numTasks); double totalTime = 0; for (unsigned int loop = 0; loop < _loops; ++loop) { - totalTime += runWorkers(*pti); + totalTime += runWorkers(type); resetTasks(); } LOG(info, "AndStressMaster::average run elapsed %10.6f s for workers %s format", - totalTime / _loops, pti->c_str()); + totalTime / _loops, type.c_str()); dropPostings(); } FastOS_Thread::Sleep(250); } - double AndStressMaster::runWorkers(const std::string &postingFormat) { @@ -328,15 +320,19 @@ AndStressMaster::runWorkers(const std::string &postingFormat) tv.SetNow(); before = tv.Secs(); unsigned int numWorkers = 8; - for (unsigned int i = 0; i < numWorkers; ++i) + for (unsigned int i = 0; i < numWorkers; ++i) { _workers.push_back(new AndStressWorker(*this, i)); + } + + for (auto& worker : _workers) { + _threadPool->NewThread(worker); + } - for (unsigned int i = 0; i < _workers.size(); ++i) - _threadPool->NewThread(_workers[i]); { std::unique_lock<std::mutex> taskGuard(_taskLock); - while (_workersDone < _workers.size()) + while (_workersDone < _workers.size()) { _taskCond.wait(taskGuard); + } } tv.SetNow(); after = tv.Secs(); @@ -349,7 +345,6 @@ AndStressMaster::runWorkers(const std::string &postingFormat) return after - before; } - AndStressWorker::AndStressWorker(AndStressMaster &master, unsigned int id) : _master(master), _id(id) @@ -362,7 +357,6 @@ AndStressWorker::~AndStressWorker() LOG(debug, "AndStressWorker::~AndStressWorker, id=%u", _id); } - static int highLevelAndPairPostingScan(SearchIterator &sb1, SearchIterator &sb2, @@ -392,7 +386,6 @@ highLevelAndPairPostingScan(SearchIterator &sb1, return hits; } - static int highLevelAndPairPostingScanUnpack(SearchIterator &sb1, SearchIterator &sb2, @@ -441,12 +434,13 @@ testFakePair(FakePosting &f1, FakePosting &f2, unsigned int numDocs, int hits = 0; uint64_t scanUnpackTime = 0; - if (unpack) + if (unpack) { hits = highLevelAndPairPostingScanUnpack(*sb1.get(), *sb2.get(), - numDocs, &scanUnpackTime); - else + numDocs, &scanUnpackTime); + } else { hits = highLevelAndPairPostingScan(*sb1.get(), *sb2.get(), - numDocs, &scanUnpackTime); + numDocs, &scanUnpackTime); + } #if 0 printf("Fakepair %s AND %s => %d hits, %" PRIu64 " cycles\n", f1.getName().c_str(), @@ -468,20 +462,19 @@ AndStressWorker::Run(FastOS_ThreadInterface *thisThread, void *arg) bool unpack = _master.getUnpack(); for (;;) { AndStressMaster::Task *task = _master.getTask(); - if (task == NULL) + if (task == nullptr) { break; + } testFakePair(*task->first, *task->second, _master.getNumDocs(), unpack); } } - AndStress::AndStress() { LOG(debug, "Andstress::AndStress"); } - AndStress::~AndStress() { LOG(debug, "Andstress::~AndStress"); diff --git a/searchlib/src/tests/postinglistbm/andstress.h b/searchlib/src/tests/postinglistbm/andstress.h index 07e344f3549..fdc99fb42ba 100644 --- a/searchlib/src/tests/postinglistbm/andstress.h +++ b/searchlib/src/tests/postinglistbm/andstress.h @@ -1,8 +1,8 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vector> #include <string> +#include <vector> namespace search { class Rand48; @@ -13,24 +13,22 @@ namespace fakedata { class FakeWordSet; } namespace postinglistbm { -class AndStress -{ +class AndStress { public: AndStress(); ~AndStress(); - void - run(search::Rand48 &rnd, - search::fakedata::FakeWordSet &wordSet, - unsigned int numDocs, - unsigned int commonDocFreq, - const std::vector<std::string> &postingTypes, - unsigned int loops, - unsigned int skipCommonPairsRate, - uint32_t numTasks, - uint32_t stride, - bool unpack); + void run(search::Rand48 &rnd, + search::fakedata::FakeWordSet &wordSet, + unsigned int numDocs, + unsigned int commonDocFreq, + const std::vector<std::string> &postingTypes, + unsigned int loops, + unsigned int skipCommonPairsRate, + uint32_t numTasks, + uint32_t stride, + bool unpack); }; } |