From 192ab87e4cecd9b443235f7c1d18a47f473c06ba Mon Sep 17 00:00:00 2001 From: Victor Zarubkin Date: Mon, 29 Jan 2018 23:42:18 +0300 Subject: [PATCH] #0 Simplified some lambdas --- easy_profiler_core/profile_manager.cpp | 5 ++-- easy_profiler_core/reader.cpp | 32 +++++++++++----------- profiler_gui/arbitrary_value_inspector.cpp | 19 ++++--------- profiler_gui/easy_graphics_scrollbar.cpp | 3 +- profiler_gui/tree_widget_loader.cpp | 15 +++++----- 5 files changed, 32 insertions(+), 42 deletions(-) diff --git a/easy_profiler_core/profile_manager.cpp b/easy_profiler_core/profile_manager.cpp index 3894968..99950bc 100644 --- a/easy_profiler_core/profile_manager.cpp +++ b/easy_profiler_core/profile_manager.cpp @@ -169,7 +169,7 @@ EASY_CONSTEXPR uint8_t FORCE_ON_FLAG = profiler::FORCE_ON & ~profiler::ON; const int64_t CPU_FREQUENCY = EASY_CHRONO_CLOCK::period::den / EASY_CHRONO_CLOCK::period::num; # define TICKS_TO_US(ticks) ticks * 1000000LL / CPU_FREQUENCY #elif defined(_WIN32) -const decltype(LARGE_INTEGER::QuadPart) CPU_FREQUENCY = ([](){ LARGE_INTEGER freq; QueryPerformanceFrequency(&freq); return freq.QuadPart; })(); +const decltype(LARGE_INTEGER::QuadPart) CPU_FREQUENCY = ([]{ LARGE_INTEGER freq; QueryPerformanceFrequency(&freq); return freq.QuadPart; })(); # define TICKS_TO_US(ticks) ticks * 1000000LL / CPU_FREQUENCY #else # ifndef __APPLE__ @@ -1621,8 +1621,7 @@ void ProfileManager::listen(uint16_t _port) std::future dumpingResult; bool dumping = false; - const auto stopDumping = [this, &dumping, &dumpingResult, &os] - { + const auto stopDumping = [&] { dumping = false; m_stopDumping.store(true, std::memory_order_release); join(dumpingResult); diff --git a/easy_profiler_core/reader.cpp b/easy_profiler_core/reader.cpp index 31d53f1..4c00d7b 100644 --- a/easy_profiler_core/reader.cpp +++ b/easy_profiler_core/reader.cpp @@ -842,7 +842,7 @@ extern "C" { auto& per_parent_statistics = parent_statistics[it.first]; per_parent_statistics.clear(); - statistics_threads.emplace_back(::std::thread([&per_parent_statistics, &per_frame_statistics, &blocks, &descriptors](::profiler::BlocksTreeRoot& root) + statistics_threads.emplace_back(::std::thread([&] (::profiler::BlocksTreeRoot& _root) { //::std::sort(root.sync.begin(), root.sync.end(), [&blocks](::profiler::block_index_t left, ::profiler::block_index_t right) //{ @@ -850,48 +850,48 @@ extern "C" { //}); ::profiler::block_index_t cs_index = 0; - for (auto i : root.children) + for (auto child_index : _root.children) { - auto& frame = blocks[i]; + auto& frame = blocks[child_index]; if (descriptors[frame.node->id()]->type() == ::profiler::BlockType::Block) - ++root.frames_number; + ++_root.frames_number; - frame.per_parent_stats = update_statistics(per_parent_statistics, frame, i, ~0U, blocks);//, root.thread_id, blocks); + frame.per_parent_stats = update_statistics(per_parent_statistics, frame, child_index, ~0U, blocks);//, root.thread_id, blocks); per_frame_statistics.clear(); - update_statistics_recursive(per_frame_statistics, frame, i, i, blocks); + update_statistics_recursive(per_frame_statistics, frame, child_index, child_index, blocks); - if (cs_index < root.sync.size()) + if (cs_index < _root.sync.size()) { CsStatsMap frame_stats_cs; do { - auto j = root.sync[cs_index]; + auto j = _root.sync[cs_index]; auto& cs = blocks[j]; if (cs.node->end() < frame.node->begin()) continue; if (cs.node->begin() > frame.node->end()) break; - cs.per_frame_stats = update_statistics(frame_stats_cs, cs, cs_index, i, blocks); + cs.per_frame_stats = update_statistics(frame_stats_cs, cs, cs_index, child_index, blocks); - } while (++cs_index < root.sync.size()); + } while (++cs_index < _root.sync.size()); } - if (root.depth < frame.depth) - root.depth = frame.depth; + if (_root.depth < frame.depth) + _root.depth = frame.depth; - root.profiled_time += frame.node->duration(); + _root.profiled_time += frame.node->duration(); } - ++root.depth; + ++_root.depth; }, ::std::ref(root))); } int j = 0, n = static_cast(statistics_threads.size()); - for (auto& t : statistics_threads) + for (auto& thread : statistics_threads) { - t.join(); + thread.join(); progress.store(90 + (10 * ++j) / n, ::std::memory_order_release); } } diff --git a/profiler_gui/arbitrary_value_inspector.cpp b/profiler_gui/arbitrary_value_inspector.cpp index 20a2df6..e8ff575 100644 --- a/profiler_gui/arbitrary_value_inspector.cpp +++ b/profiler_gui/arbitrary_value_inspector.cpp @@ -199,13 +199,9 @@ void ArbitraryValuesCollection::collectValues(profiler::thread_id_t _threadId, p m_jobType = ValuesJob; if (_valueId == 0) - { - m_worker.enqueue([this, _threadId, _valueName] { collectByName(_threadId, _valueName); }, m_bInterrupt); - } + m_worker.enqueue([=] { collectByName(_threadId, _valueName); }, m_bInterrupt); else - { - m_worker.enqueue([this, _threadId, _valueId] { collectById(_threadId, _valueId); }, m_bInterrupt); - } + m_worker.enqueue([=] { collectById(_threadId, _valueId); }, m_bInterrupt); } void ArbitraryValuesCollection::collectValues(profiler::thread_id_t _threadId, profiler::vin_t _valueId, const char* _valueName, profiler::timestamp_t _beginTime) @@ -220,13 +216,9 @@ void ArbitraryValuesCollection::collectValues(profiler::thread_id_t _threadId, p m_jobType = ValuesJob | PointsJob; if (_valueId == 0) - { - m_worker.enqueue([this, _threadId, _valueName] { collectByName(_threadId, _valueName); }, m_bInterrupt); - } + m_worker.enqueue([=] { collectByName(_threadId, _valueName); }, m_bInterrupt); else - { - m_worker.enqueue([this, _threadId, _valueId] { collectById(_threadId, _valueId); }, m_bInterrupt); - } + m_worker.enqueue([=] { collectById(_threadId, _valueId); }, m_bInterrupt); } bool ArbitraryValuesCollection::calculatePoints(profiler::timestamp_t _beginTime) @@ -535,8 +527,7 @@ bool ArbitraryValuesChartItem::updateImage() const auto bindMode = widget->bindMode(); const auto beginTime = EASY_GLOBALS.begin_time; const auto autoHeight = EASY_GLOBALS.auto_adjust_chart_height; - m_worker.enqueue([this, rect, scale, left, right, value, window, bindMode, beginTime, autoHeight] - { + m_worker.enqueue([=] { updateImageAsync(rect, scale, left, right, right - left, value, window, bindMode, beginTime, autoHeight); }, m_bReady); diff --git a/profiler_gui/easy_graphics_scrollbar.cpp b/profiler_gui/easy_graphics_scrollbar.cpp index 48a9e35..c27093e 100644 --- a/profiler_gui/easy_graphics_scrollbar.cpp +++ b/profiler_gui/easy_graphics_scrollbar.cpp @@ -822,8 +822,7 @@ bool GraphicsHistogramItem::updateImage() const auto frameTime = EASY_GLOBALS.frame_time; const auto beginTime = EASY_GLOBALS.begin_time; const auto autoHeight = EASY_GLOBALS.auto_adjust_histogram_height; - m_worker.enqueue([this, rect, regime, scale, left, right, value, window, top, bottom, bindMode, frameTime, beginTime, autoHeight] - { + m_worker.enqueue([=] { updateImageAsync(rect, regime, scale, left, right, right - left, value, window, top, bottom, bindMode, frameTime, beginTime, autoHeight); }, m_bReady); diff --git a/profiler_gui/tree_widget_loader.cpp b/profiler_gui/tree_widget_loader.cpp index 23252e0..76be3c7 100644 --- a/profiler_gui/tree_widget_loader.cpp +++ b/profiler_gui/tree_widget_loader.cpp @@ -176,13 +176,14 @@ void TreeWidgetLoader::fillTree(::profiler::timestamp_t& _beginTime, const unsig const auto decoratedNames = EASY_GLOBALS.use_decorated_thread_name; const auto hexThreadIds = EASY_GLOBALS.hex_thread_id; const auto timeUnits = EASY_GLOBALS.time_units; - m_worker.enqueue([this, &_beginTime, _blocksNumber, &_blocksTree, zeroBlocks, decoratedNames, hexThreadIds, timeUnits] - { - setTreeInternal1(_beginTime, _blocksNumber, _blocksTree, zeroBlocks, decoratedNames, hexThreadIds, timeUnits); + const auto beginTime = std::ref(_beginTime); + const auto blocksTree = std::ref(_blocksTree); + m_worker.enqueue([=] { + setTreeInternal1(beginTime, _blocksNumber, blocksTree, zeroBlocks, decoratedNames, hexThreadIds, timeUnits); }, m_bInterrupt); } -void TreeWidgetLoader::fillTreeBlocks(const::profiler_gui::TreeBlocks& _blocks, ::profiler::timestamp_t _beginTime, ::profiler::timestamp_t _left, ::profiler::timestamp_t _right, bool _strict, TreeMode _mode) +void TreeWidgetLoader::fillTreeBlocks(const ::profiler_gui::TreeBlocks& _blocks, ::profiler::timestamp_t _beginTime, ::profiler::timestamp_t _left, ::profiler::timestamp_t _right, bool _strict, TreeMode _mode) { interrupt(); m_mode = _mode; @@ -191,9 +192,9 @@ void TreeWidgetLoader::fillTreeBlocks(const::profiler_gui::TreeBlocks& _blocks, const auto decoratedNames = EASY_GLOBALS.use_decorated_thread_name; const auto hexThreadIds = EASY_GLOBALS.hex_thread_id; const auto timeUnits = EASY_GLOBALS.time_units; - m_worker.enqueue([this, _beginTime, &_blocks, _left, _right, _strict, zeroBlocks, decoratedNames, hexThreadIds, timeUnits] - { - setTreeInternal2(_beginTime, _blocks, _left, _right, _strict, zeroBlocks, decoratedNames, hexThreadIds, timeUnits); + const auto blocks = std::ref(_blocks); + m_worker.enqueue([=] { + setTreeInternal2(_beginTime, blocks, _left, _right, _strict, zeroBlocks, decoratedNames, hexThreadIds, timeUnits); }, m_bInterrupt); }