Optimizations of pre-processing for 'hist' tree method (#4310)
* oprimizations for pre-processing * code cleaning * code cleaning * code cleaning after review * Apply suggestions from code review Co-Authored-By: SmirnovEgorRu <egor.smirnov@intel.com>
This commit is contained in:
committed by
Philip Hyunsu Cho
parent
207f058711
commit
711397d645
@@ -19,6 +19,74 @@
|
||||
namespace xgboost {
|
||||
namespace common {
|
||||
|
||||
/*
|
||||
* \brief A thin wrapper around dynamically allocated C-style array.
|
||||
* Make sure to call resize() before use.
|
||||
*/
|
||||
template<typename T>
|
||||
struct SimpleArray {
|
||||
~SimpleArray() {
|
||||
free(ptr_);
|
||||
ptr_ = nullptr;
|
||||
}
|
||||
|
||||
void resize(size_t n) {
|
||||
T* ptr = static_cast<T*>(malloc(n*sizeof(T)));
|
||||
memcpy(ptr, ptr_, n_ * sizeof(T));
|
||||
free(ptr_);
|
||||
ptr_ = ptr;
|
||||
n_ = n;
|
||||
}
|
||||
|
||||
T& operator[](size_t idx) {
|
||||
return ptr_[idx];
|
||||
}
|
||||
|
||||
T& operator[](size_t idx) const {
|
||||
return ptr_[idx];
|
||||
}
|
||||
|
||||
size_t size() const {
|
||||
return n_;
|
||||
}
|
||||
|
||||
T back() const {
|
||||
return ptr_[n_-1];
|
||||
}
|
||||
|
||||
T* data() {
|
||||
return ptr_;
|
||||
}
|
||||
|
||||
const T* data() const {
|
||||
return ptr_;
|
||||
}
|
||||
|
||||
|
||||
T* begin() {
|
||||
return ptr_;
|
||||
}
|
||||
|
||||
const T* begin() const {
|
||||
return ptr_;
|
||||
}
|
||||
|
||||
T* end() {
|
||||
return ptr_ + n_;
|
||||
}
|
||||
|
||||
const T* end() const {
|
||||
return ptr_ + n_;
|
||||
}
|
||||
|
||||
private:
|
||||
T* ptr_ = nullptr;
|
||||
size_t n_ = 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/*! \brief Cut configuration for all the features. */
|
||||
struct HistCutMatrix {
|
||||
/*! \brief Unit pointer to rows by element position */
|
||||
|
||||
Reference in New Issue
Block a user