Alien-XGBoost
view release on metacpan or search on metacpan
xgboost/dmlc-core/src/data/disk_row_iter.h view on Meta::CPAN
/*!
* Copyright (c) 2015 by Contributors
* \file basic_row_iter.h
* \brief row based iterator that
* caches things into disk and then load segments
* \author Tianqi Chen
*/
#ifndef DMLC_DATA_DISK_ROW_ITER_H_
#define DMLC_DATA_DISK_ROW_ITER_H_
#include <dmlc/io.h>
#include <dmlc/logging.h>
#include <dmlc/data.h>
#include <dmlc/timer.h>
#include <dmlc/threadediter.h>
#include <algorithm>
#include <string>
#include "./row_block.h"
#include "./libsvm_parser.h"
#if DMLC_ENABLE_STD_THREAD
namespace dmlc {
namespace data {
/*!
* \brief basic set of row iterators that provides
* \tparam IndexType the type of index we are using
*/
template<typename IndexType>
class DiskRowIter: public RowBlockIter<IndexType> {
public:
// page size 64MB
static const size_t kPageSize = 64UL << 20UL;
/*!
* \brief disk row iterator constructor
* \param parser parser used to generate this
*/
explicit DiskRowIter(Parser<IndexType> *parser,
const char *cache_file,
bool reuse_cache)
: cache_file_(cache_file), fi_(NULL) {
if (reuse_cache) {
if (!TryLoadCache()) {
this->BuildCache(parser);
CHECK(TryLoadCache())
<< "failed to build cache file " << cache_file;
}
} else {
this->BuildCache(parser);
CHECK(TryLoadCache())
<< "failed to build cache file " << cache_file;
}
delete parser;
}
virtual ~DiskRowIter(void) {
iter_.Destroy();
delete fi_;
}
virtual void BeforeFirst(void) {
iter_.BeforeFirst();
}
virtual bool Next(void) {
if (iter_.Next()) {
row_ = iter_.Value().GetBlock();
return true;
} else {
return false;
}
}
virtual const RowBlock<IndexType> &Value(void) const {
return row_;
}
virtual size_t NumCol(void) const {
return num_col_;
( run in 0.565 second using v1.01-cache-2.11-cpan-524268b4103 )