ClickHouse/dbms/include/DB/DataStreams/IProfilingBlockInputStream.h
2011-09-26 01:50:32 +00:00

57 lines
1.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <Poco/Stopwatch.h>
#include <DB/Core/Names.h>
#include <DB/DataStreams/IBlockInputStream.h>
namespace DB
{
/// Информация для профайлинга.
struct BlockStreamProfileInfo
{
bool started;
Poco::Stopwatch work_stopwatch; /// Время вычислений (выполнения функции read())
Poco::Stopwatch total_stopwatch; /// Время с учётом ожидания
size_t rows;
size_t blocks;
size_t bytes;
/// Информация о вложенных потоках - для выделения чистого времени работы.
typedef std::vector<const BlockStreamProfileInfo *> BlockStreamProfileInfos;
BlockStreamProfileInfos nested_infos;
String column_names;
BlockStreamProfileInfo() : started(false), rows(0), blocks(0), bytes(0) {}
void update(Block & block);
void print(std::ostream & ostr) const;
};
/** Смотрит за тем, как работает поток блоков.
* Позволяет получить информацию для профайлинга:
* строк в секунду, блоков в секунду, мегабайт в секунду и т. п.
*/
class IProfilingBlockInputStream : public IBlockInputStream
{
public:
Block read();
/// Наследники должны реализовать эту функцию.
virtual Block readImpl() = 0;
const BlockStreamProfileInfo & getInfo() const;
private:
BlockStreamProfileInfo info;
};
}