From 8b8ecec9199c7d5e00de90e2ee0357ff2cd4936e Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Tue, 18 May 2010 17:53:21 +0000 Subject: [PATCH] dbms: development. --- dbms/src/DataTypes/tests/data_type_string.cpp | 49 +++++++++++++------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/dbms/src/DataTypes/tests/data_type_string.cpp b/dbms/src/DataTypes/tests/data_type_string.cpp index 721bd9f7085..79db5be0edf 100644 --- a/dbms/src/DataTypes/tests/data_type_string.cpp +++ b/dbms/src/DataTypes/tests/data_type_string.cpp @@ -12,32 +12,49 @@ int main(int argc, char ** argv) { - Poco::SharedPtr column = new DB::ColumnString(); - DB::ColumnUInt8::Container_t & data = dynamic_cast(column->getData()).getData(); - DB::ColumnArray::Offsets_t & offsets = column->getOffsets(); - DB::DataTypeString data_type; - Poco::Stopwatch stopwatch; size_t n = 10000000; - const char * s = "Hello, world!"; size_t size = strlen(s) + 1; + DB::DataTypeString data_type; - data.resize(n * size); - offsets.resize(n); - for (size_t i = 0; i < n; ++i) { - memcpy(&data[i * size], s, size); - offsets[i] = (i + 1) * size; + Poco::SharedPtr column = new DB::ColumnString(); + DB::ColumnUInt8::Container_t & data = dynamic_cast(column->getData()).getData(); + DB::ColumnArray::Offsets_t & offsets = column->getOffsets(); + + data.resize(n * size); + offsets.resize(n); + for (size_t i = 0; i < n; ++i) + { + memcpy(&data[i * size], s, size); + offsets[i] = (i + 1) * size; + } + + std::ofstream ostr("test"); + + stopwatch.restart(); + data_type.serializeBinary(*column, ostr); + stopwatch.stop(); + + std::cout << "Writing, elapsed: " << static_cast(stopwatch.elapsed()) / 1000000 << std::endl; } - std::ofstream ostr("/dev/null"); + { + Poco::SharedPtr column = new DB::ColumnString(); - stopwatch.restart(); - data_type.serializeBinary(*column, ostr); - stopwatch.stop(); + std::ifstream istr("test"); - std::cout << "Elapsed: " << static_cast(stopwatch.elapsed()) / 1000000 << std::endl; + stopwatch.restart(); + data_type.deserializeBinary(*column, istr, n); + stopwatch.stop(); + + std::cout << "Reading, elapsed: " << static_cast(stopwatch.elapsed()) / 1000000 << std::endl; + + std::cout << std::endl + << boost::get((*column)[0]) << std::endl + << boost::get((*column)[n - 1]) << std::endl; + } return 0; }