STXXL
1.4-dev
|
Package that enables pipelining of consequent sorts and scans of the external data avoiding the saving the intermediate results on the disk, e.g. 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 ValueType , typename AllocStr , typename SizeType , typename DiffType , unsigned BlockSize, typename PagerType , unsigned PageSize, class StreamAlgorithm > | |
stxxl::vector_iterator < ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | stxxl::stream::materialize (StreamAlgorithm &in, stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > outbegin, stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > 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 ValueType , typename AllocStr , typename SizeType , typename DiffType , unsigned BlockSize, typename PagerType , unsigned PageSize, class StreamAlgorithm > | |
stxxl::vector_iterator < ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | stxxl::stream::materialize (StreamAlgorithm &in, stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > 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 ValueType , typename AllocStr , typename SizeType , typename DiffType , unsigned BlockSize, typename PagerType , unsigned PageSize> | |
vector_iterator2stream < stxxl::vector_iterator < ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > > | stxxl::stream::streamify (stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > begin, stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > 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 ValueType , typename AllocStr , typename SizeType , typename DiffType , unsigned BlockSize, typename PagerType , unsigned PageSize> | |
vector_iterator2stream < stxxl::const_vector_iterator < ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > > | stxxl::stream::streamify (stxxl::const_vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > begin, stxxl::const_vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > 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 ValueType , typename AllocStr , typename SizeType , typename DiffType , unsigned BlockSize, typename PagerType , unsigned PageSize> | |
vector_iterator2stream_sr < stxxl::vector_iterator < ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > > | stxxl::stream::streamify_sr (stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > begin, stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > end, unsigned_type nbuffers=0) |
Version of streamify . Switches from vector_iterator2stream to iterator2stream for small ranges. More... | |
template<typename ValueType , typename AllocStr , typename SizeType , typename DiffType , unsigned BlockSize, typename PagerType , unsigned PageSize> | |
vector_iterator2stream_sr < stxxl::const_vector_iterator < ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > > | stxxl::stream::streamify_sr (stxxl::const_vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > begin, stxxl::const_vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > 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 873 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 168 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 428 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 450 of file stream.h.
References STXXL_PRETTY_FUNCTION_NAME, and STXXL_VERBOSE_MATERIALIZE.
stxxl::vector_iterator<ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize> stxxl::stream::materialize | ( | StreamAlgorithm & | in, |
stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | outbegin, | ||
stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | 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 479 of file stream.h.
References stxxl::buf_ostream< BlockType, BidIteratorType >::flush(), STXXL_PRETTY_FUNCTION_NAME, and STXXL_VERBOSE_MATERIALIZE.
stxxl::vector_iterator<ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize> stxxl::stream::materialize | ( | StreamAlgorithm & | in, |
stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | 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 561 of file stream.h.
References stxxl::buf_ostream< BlockType, BidIteratorType >::flush(), STXXL_PRETTY_FUNCTION_NAME, and STXXL_VERBOSE_MATERIALIZE.
|
private |
Definition at line 1336 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 93 of file stream.h.
Referenced by stxxl::hash_map::hash_map< KeyType, MappedType, HashType, CompareType, SubBlockSize, SubBlocksPerBlock, AllocType >::insert(), and stxxl::random_shuffle().
vector_iterator2stream< stxxl::vector_iterator<ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize> > stxxl::stream::streamify | ( | stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | begin, |
stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | 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 212 of file stream.h.
References STXXL_VERBOSE1.
vector_iterator2stream< stxxl::const_vector_iterator<ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize> > stxxl::stream::streamify | ( | stxxl::const_vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | begin, |
stxxl::const_vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | 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 255 of file stream.h.
References STXXL_VERBOSE1.
generator2stream<Generator> stxxl::stream::streamify | ( | Generator | gen_ | ) |
vector_iterator2stream_sr< stxxl::vector_iterator<ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize> > stxxl::stream::streamify_sr | ( | stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | begin, |
stxxl::vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | end, | ||
unsigned_type | nbuffers = 0 |
||
) |
Version of streamify
. Switches from vector_iterator2stream
to iterator2stream
for small ranges.
Definition at line 380 of file stream.h.
References STXXL_VERBOSE1.
vector_iterator2stream_sr< stxxl::const_vector_iterator<ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize> > stxxl::stream::streamify_sr | ( | stxxl::const_vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | begin, |
stxxl::const_vector_iterator< ValueType, AllocStr, SizeType, DiffType, BlockSize, PagerType, PageSize > | end, | ||
unsigned_type | nbuffers = 0 |
||
) |
Version of streamify
. Switches from vector_iterator2stream
to iterator2stream
for small ranges.
Definition at line 403 of file stream.h.
References STXXL_VERBOSE1.