1111#include < chrono>
1212#include < functional>
1313#include < thread>
14+ #include < utility>
1415
1516#include " ActivityLoggerFactory.h"
1617#include " ActivityTrace.h"
@@ -37,7 +38,7 @@ static std::shared_ptr<LoggerCollector>& loggerCollectorFactory() {
3738}
3839
3940void ActivityProfilerController::setLoggerCollectorFactory (
40- std::function<std::shared_ptr<LoggerCollector>()> factory) {
41+ const std::function<std::shared_ptr<LoggerCollector>()>& factory) {
4142 loggerCollectorFactory () = factory ();
4243}
4344
@@ -110,7 +111,7 @@ static ActivityLoggerFactory& loggerFactory() {
110111void ActivityProfilerController::addLoggerFactory (
111112 const std::string& protocol,
112113 ActivityLoggerFactory::FactoryFunc factory) {
113- loggerFactory ().addProtocol (protocol, factory);
114+ loggerFactory ().addProtocol (protocol, std::move ( factory) );
114115}
115116
116117static std::unique_ptr<ActivityLogger> makeLogger (const Config& config) {
@@ -253,28 +254,21 @@ void ActivityProfilerController::profilerLoop() {
253254}
254255
255256void ActivityProfilerController::memoryProfilerLoop () {
256- std::string path = asyncRequestConfig_->activitiesLogFile ();
257- auto profile_time = asyncRequestConfig_->profileMemoryDuration ();
258- std::unique_ptr<Config> config = asyncRequestConfig_->clone ();
259257 while (!stopRunloop_) {
260258 // Perform Double-checked locking to reduce overhead of taking lock.
261259 if (asyncRequestConfig_ && !profiler_->isActive ()) {
262260 std::lock_guard<std::mutex> lock (asyncConfigLock_);
263261 if (asyncRequestConfig_ && !profiler_->isActive () &&
264262 asyncRequestConfig_->memoryProfilerEnabled ()) {
265263 logger_ = makeLogger (*asyncRequestConfig_);
266- path = asyncRequestConfig_->activitiesLogFile ();
267- profile_time = asyncRequestConfig_->profileMemoryDuration ();
268- config = asyncRequestConfig_->clone ();
264+ auto path = asyncRequestConfig_->activitiesLogFile ();
265+ auto profile_time = asyncRequestConfig_->profileMemoryDuration ();
266+ auto config = asyncRequestConfig_->clone ();
269267 asyncRequestConfig_ = nullptr ;
270- } else {
271- continue ;
268+ profiler_-> performMemoryLoop (
269+ path, profile_time, logger_. get (), *config) ;
272270 }
273- } else {
274- continue ;
275271 }
276-
277- profiler_->performMemoryLoop (path, profile_time, logger_.get (), *config);
278272 }
279273}
280274
0 commit comments