STXXL
1.4.0
|
Package that enables pipelining of consequent sorts and scans of the external data avoiding the saving the intermediate results on the disk, e.g. the output of a sort can be directly fed into a scan procedure without the need to save it on a disk. All components of the package are contained in the stxxl::stream
namespace.
More...
Functions | |
template<class RunsType_ , class CompareType_ > | |
bool | stxxl::stream::check_sorted_runs (const RunsType_ &sruns, CompareType_ cmp) |
Checker for the sorted runs object created by the runs_creator . More... | |
void | stxxl::stream::basic_runs_creator< Input_, CompareType_, BlockSize_, AllocStr_ >::compute_result () |
Finish the results, i. e. create all runs. More... | |
template<class StreamAlgorithm_ > | |
void | stxxl::stream::discard (StreamAlgorithm_ &in) |
Reads stream content and discards it. Useful where you do not need the processed stream anymore, but are just interested in side effects, or just for debugging. More... | |
template<class OutputIterator_ , class StreamAlgorithm_ > | |
OutputIterator_ | stxxl::stream::materialize (StreamAlgorithm_ &in, OutputIterator_ out) |
Stores consecutively stream content to an output iterator. More... | |
template<class OutputIterator_ , class StreamAlgorithm_ > | |
OutputIterator_ | stxxl::stream::materialize (StreamAlgorithm_ &in, OutputIterator_ outbegin, OutputIterator_ outend) |
Stores consecutively stream content to an output iterator range until end of the stream or end of the iterator range is reached. More... | |
template<typename Tp_ , typename AllocStr_ , typename SzTp_ , typename DiffTp_ , unsigned BlkSize_, typename PgTp_ , unsigned PgSz_, class StreamAlgorithm_ > | |
stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | stxxl::stream::materialize (StreamAlgorithm_ &in, stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > outbegin, stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > outend, unsigned_type nbuffers=0) |
Stores consecutively stream content to an output stxxl::vector iterator until end of the stream or end of the iterator range is reached. More... | |
template<typename Tp_ , typename AllocStr_ , typename SzTp_ , typename DiffTp_ , unsigned BlkSize_, typename PgTp_ , unsigned PgSz_, class StreamAlgorithm_ > | |
stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | stxxl::stream::materialize (StreamAlgorithm_ &in, stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > out, unsigned_type nbuffers=0) |
Stores consecutively stream content to an output stxxl::vector iterator. More... | |
void | stxxl::stream::basic_runs_merger< RunsType_, CompareType_, AllocStr_ >::merge_recursively () |
template<class InputIterator_ > | |
iterator2stream< InputIterator_ > | stxxl::stream::streamify (InputIterator_ begin, InputIterator_ end) |
Input iterator range to stream converter. More... | |
template<typename Tp_ , typename AllocStr_ , typename SzTp_ , typename DiffTp_ , unsigned BlkSize_, typename PgTp_ , unsigned PgSz_> | |
vector_iterator2stream < stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > > | stxxl::stream::streamify (stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > begin, stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > end, unsigned_type nbuffers=0) |
Input external stxxl::vector iterator range to stream converter. It is more efficient than generic input iterator streamify thanks to use of overlapping. More... | |
template<typename Tp_ , typename AllocStr_ , typename SzTp_ , typename DiffTp_ , unsigned BlkSize_, typename PgTp_ , unsigned PgSz_> | |
vector_iterator2stream < stxxl::const_vector_iterator < Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > > | stxxl::stream::streamify (stxxl::const_vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > begin, stxxl::const_vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > end, unsigned_type nbuffers=0) |
Input external stxxl::vector const iterator range to stream converter. It is more efficient than generic input iterator streamify thanks to use of overlapping. More... | |
template<class Generator_ > | |
generator2stream< Generator_ > | stxxl::stream::streamify (Generator_ gen_) |
Adaptable generator to stream converter. More... | |
template<typename Tp_ , typename AllocStr_ , typename SzTp_ , typename DiffTp_ , unsigned BlkSize_, typename PgTp_ , unsigned PgSz_> | |
vector_iterator2stream_sr < stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > > | stxxl::stream::streamify_sr (stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > begin, stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > end, unsigned_type nbuffers=0) |
Version of streamify . Switches from vector_iterator2stream to iterator2stream for small ranges. More... | |
template<typename Tp_ , typename AllocStr_ , typename SzTp_ , typename DiffTp_ , unsigned BlkSize_, typename PgTp_ , unsigned PgSz_> | |
vector_iterator2stream_sr < stxxl::const_vector_iterator < Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > > | stxxl::stream::streamify_sr (stxxl::const_vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > begin, stxxl::const_vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > end, unsigned_type nbuffers=0) |
Version of streamify . Switches from vector_iterator2stream to iterator2stream for small ranges. More... | |
Package that enables pipelining of consequent sorts and scans of the external data avoiding the saving the intermediate results on the disk, e.g. the output of a sort can be directly fed into a scan procedure without the need to save it on a disk. All components of the package are contained in the stxxl::stream
namespace.
STREAM ALGORITHM CONCEPT (Do not confuse with C++ input/output streams)
struct stream_algorithm // stream, pipe, whatever { typedef some_type value_type; const value_type & operator * () const; // return current element of the stream stream_algorithm & operator ++ (); // go to next element. precondition: empty() == false bool empty() const; // return true if end of stream is reached };
bool stxxl::stream::check_sorted_runs | ( | const RunsType_ & | sruns, |
CompareType_ | cmp | ||
) |
Checker for the sorted runs object created by the runs_creator
.
sruns | sorted runs object |
cmp | comparison object used for checking the order of elements in runs |
true
if runs are sorted, false
otherwise =
Definition at line 851 of file sort_stream.h.
References stxxl::is_sorted(), stxxl::make_element_iterator(), STXXL_ERRMSG, STXXL_MSG, STXXL_VERBOSE2, stxxl::sort_helper::verify_sentinel_strict_weak_ordering(), and stxxl::wait_all().
|
private |
Finish the results, i. e. create all runs.
This is the main routine of this class.
Definition at line 157 of file sort_stream.h.
References stxxl::mng_local::element_block< Type, Size >::begin(), stxxl::check_sort_settings(), stxxl::block_manager::delete_blocks(), stxxl::div_ceil(), stxxl::make_bid_iterator(), stxxl::block_manager::new_blocks(), stxxl::sort(), STXXL_VERBOSE1, stxxl::request_interface::wait(), stxxl::wait_all(), and stxxl::typed_block< RawSize, Type, NRef, MetaInfoType >::write().
void stxxl::stream::discard | ( | StreamAlgorithm_ & | in | ) |
OutputIterator_ stxxl::stream::materialize | ( | StreamAlgorithm_ & | in, |
OutputIterator_ | out | ||
) |
Stores consecutively stream content to an output iterator.
in | stream to be stored used as source |
out | output iterator used as destination |
Definition at line 396 of file stream.h.
References STXXL_PRETTY_FUNCTION_NAME, and STXXL_VERBOSE_MATERIALIZE.
Referenced by stxxl::sort().
OutputIterator_ stxxl::stream::materialize | ( | StreamAlgorithm_ & | in, |
OutputIterator_ | outbegin, | ||
OutputIterator_ | outend | ||
) |
Stores consecutively stream content to an output iterator range until end of the stream or end of the iterator range is reached.
in | stream to be stored used as source |
outbegin | output iterator used as destination |
outend | output end iterator, pointing beyond the output range |
This function is useful when you do not know the length of the stream beforehand.
Definition at line 419 of file stream.h.
References STXXL_PRETTY_FUNCTION_NAME, and STXXL_VERBOSE_MATERIALIZE.
stxxl::vector_iterator<Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_> stxxl::stream::materialize | ( | StreamAlgorithm_ & | in, |
stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | outbegin, | ||
stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | outend, | ||
unsigned_type | nbuffers = 0 |
||
) |
Stores consecutively stream content to an output stxxl::vector
iterator until end of the stream or end of the iterator range is reached.
in | stream to be stored used as source |
outbegin | output stxxl::vector iterator used as destination |
outend | output end iterator, pointing beyond the output range |
nbuffers | number of blocks used for overlapped writing (0 is default, which equals to (2 * number_of_disks) |
This function is useful when you do not know the length of the stream beforehand.
Definition at line 446 of file stream.h.
References stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize >::bid(), stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize >::block_externally_updated(), stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize >::block_offset(), stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize >::flush(), STXXL_PRETTY_FUNCTION_NAME, and STXXL_VERBOSE_MATERIALIZE.
stxxl::vector_iterator<Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_> stxxl::stream::materialize | ( | StreamAlgorithm_ & | in, |
stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | out, | ||
unsigned_type | nbuffers = 0 |
||
) |
Stores consecutively stream content to an output stxxl::vector
iterator.
in | stream to be stored used as source |
out | output stxxl::vector iterator used as destination |
nbuffers | number of blocks used for overlapped writing (0 is default, which equals to (2 * number_of_disks) |
Definition at line 526 of file stream.h.
References stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize >::bid(), stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize >::block_externally_updated(), stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize >::block_offset(), stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize >::flush(), STXXL_PRETTY_FUNCTION_NAME, and STXXL_VERBOSE_MATERIALIZE.
|
private |
Definition at line 1310 of file sort_stream.h.
References stxxl::div_ceil(), stxxl::stream::basic_runs_merger< RunsType_, CompareType_, AllocStr_ >::empty(), stxxl::stream::basic_runs_merger< RunsType_, CompareType_, AllocStr_ >::initialize(), stxxl::make_bid_iterator(), stxxl::block_manager::new_blocks(), stxxl::optimal_merge_factor(), stxxl::STXXL_MIN(), and STXXL_MSG.
iterator2stream<InputIterator_> stxxl::stream::streamify | ( | InputIterator_ | begin, |
InputIterator_ | end | ||
) |
Input iterator range to stream converter.
begin | iterator, pointing to the first value |
end | iterator, pointing to the last + 1 position, i.e. beyond the range |
Definition at line 116 of file stream.h.
Referenced by stxxl::random_shuffle(), and stxxl::sort().
vector_iterator2stream<stxxl::vector_iterator<Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_> > stxxl::stream::streamify | ( | stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | begin, |
stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | end, | ||
unsigned_type | nbuffers = 0 |
||
) |
Input external stxxl::vector
iterator range to stream converter. It is more efficient than generic input iterator streamify
thanks to use of overlapping.
begin | iterator, pointing to the first value |
end | iterator, pointing to the last + 1 position, i.e. beyond the range |
nbuffers | number of blocks used for overlapped reading (0 is default, which equals to (2 * number_of_disks) |
Definition at line 224 of file stream.h.
References STXXL_VERBOSE1.
vector_iterator2stream<stxxl::const_vector_iterator<Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_> > stxxl::stream::streamify | ( | stxxl::const_vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | begin, |
stxxl::const_vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | end, | ||
unsigned_type | nbuffers = 0 |
||
) |
Input external stxxl::vector
const iterator range to stream converter. It is more efficient than generic input iterator streamify
thanks to use of overlapping.
begin | const iterator, pointing to the first value |
end | const iterator, pointing to the last + 1 position, i.e. beyond the range |
nbuffers | number of blocks used for overlapped reading (0 is default, which equals to (2 * number_of_disks) |
Definition at line 252 of file stream.h.
References STXXL_VERBOSE1.
generator2stream<Generator_> stxxl::stream::streamify | ( | Generator_ | gen_ | ) |
vector_iterator2stream_sr<stxxl::vector_iterator<Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_> > stxxl::stream::streamify_sr | ( | stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | begin, |
stxxl::vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | end, | ||
unsigned_type | nbuffers = 0 |
||
) |
Version of streamify
. Switches from vector_iterator2stream
to iterator2stream
for small ranges.
Definition at line 360 of file stream.h.
References STXXL_VERBOSE1.
vector_iterator2stream_sr<stxxl::const_vector_iterator<Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_> > stxxl::stream::streamify_sr | ( | stxxl::const_vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | begin, |
stxxl::const_vector_iterator< Tp_, AllocStr_, SzTp_, DiffTp_, BlkSize_, PgTp_, PgSz_ > | end, | ||
unsigned_type | nbuffers = 0 |
||
) |
Version of streamify
. Switches from vector_iterator2stream
to iterator2stream
for small ranges.
Definition at line 374 of file stream.h.
References STXXL_VERBOSE1.