From 7ded05f365ecf9eb280bc337c970e1ff44c15140 Mon Sep 17 00:00:00 2001 From: gabi Date: Fri, 21 Nov 2014 11:23:55 +0200 Subject: [PATCH] log_msg faster move --- include/spdlog/details/log_msg.h | 30 ++++++++---------------------- include/spdlog/details/stack_buf.h | 8 ++++---- include/spdlog/logger.h | 3 --- 3 files changed, 12 insertions(+), 29 deletions(-) diff --git a/include/spdlog/details/log_msg.h b/include/spdlog/details/log_msg.h index 1017011b..76ca9b89 100644 --- a/include/spdlog/details/log_msg.h +++ b/include/spdlog/details/log_msg.h @@ -50,29 +50,17 @@ struct log_msg raw(other.raw), formatted(other.formatted) {} - log_msg(log_msg&& other) - { - swap(*this, other); - } + log_msg(log_msg&& other) : + logger_name(std::move(other.logger_name)), + level(other.level), + time(std::move(other.time)), + tm_time(other.tm_time), + raw(std::move(other.raw)), + formatted(std::move(other.formatted)) {} - void swap(log_msg& l, log_msg& r) - { - using std::swap; - swap(l.logger_name, r.logger_name); - swap(l.level, r.level); - swap(l.time, r.time); - swap(l.tm_time, r.tm_time); - swap(l.raw, r.raw); - swap(l.formatted, r.formatted); - } + log_msg& operator=(log_msg&& other) = delete; - log_msg& operator=(log_msg other) - { - swap(*this, other); - return *this; - } - void clear() { @@ -86,8 +74,6 @@ struct log_msg std::tm tm_time; fast_oss raw; fast_oss formatted; - - }; } } diff --git a/include/spdlog/details/stack_buf.h b/include/spdlog/details/stack_buf.h index 78c13994..7b120967 100644 --- a/include/spdlog/details/stack_buf.h +++ b/include/spdlog/details/stack_buf.h @@ -42,10 +42,10 @@ public: static const unsigned short stack_size = STACK_SIZE; stack_buf() :_v(), _stack_size(0) {} ~stack_buf() = default; - stack_buf(const stack_buf& other):stack_buf(other, delegate_copy_move {}) + stack_buf(const stack_buf& other) :stack_buf(other, delegate_copy_or_move {}) {} - stack_buf(stack_buf&& other):stack_buf(other, delegate_copy_move {}) + stack_buf(stack_buf&& other) :stack_buf(other, delegate_copy_or_move {}) { other.clear(); } @@ -109,9 +109,9 @@ public: } private: - struct delegate_copy_move {}; + struct delegate_copy_or_move {}; template - stack_buf(T1&& other, delegate_copy_move) + stack_buf(T1&& other, delegate_copy_or_move) { _stack_size = other._stack_size; if (other.vector_used()) diff --git a/include/spdlog/logger.h b/include/spdlog/logger.h index 1fe8dc54..3052c39b 100644 --- a/include/spdlog/logger.h +++ b/include/spdlog/logger.h @@ -96,9 +96,6 @@ private: void _variadic_log(details::line_logger&l, const First& first, const Rest&... rest); void _log_msg(details::log_msg& msg); }; - - - } #include "./details/logger_impl.h"