Releases: yse/easy_profiler
Releases · yse/easy_profiler
v2.1.0
Core
- #106 bookmarks support
- #134 fixed includes
- #157 added new build flags
EASY_OPTION_TRUNCATE_RUNTIME_NAMES
andEASY_OPTION_CHECK_MAX_VALUE_SIZE
for checking maximum block runtime-name length and maxEASY_VALUE
array size at run-time. I recommend you do not use these flags (they're disabled by default) because they add additional runtime checks which would lead to minor slow-down. It is just better not to use very long names and arrays (max 2816 bytes / chars) instead of additional runtime checks. - replaced usage of
COMPILER_MSVC
(which is not defined anywhere) with_MSC_VER
incurrent_time.h
UI
- #106 bookmarks support
- added search matches highlighting for Stats tree and Blocks list
- added statistics for selected area
- added median duration calculation
- added avg and median durations to the histogram
- added borders for the histogram
- added possibility to select area using selected block begin and end times (just right-click on any block on the Diagram)
- use transparent RoundProgressDialog everywhere
- added max rows count calculation for Call-stack Stata-tree mode
- #112 fixed loosing focus for Diagram tool-tips
- #125 fixed tool-tips behavior when switching between applications
- #143 fixed negative weight for
QFont
- #154 fixed reconnect issue after previous connection failure
- fixed CSS parsing
- fixed CSS style
- workaround for Qt huge memory leak on Linux when creating and deleting Qt-objects in different threads
- rearranged application settings
Build
- #123 #124 linux deployment fix
- #128 #129 fixed build with
std::chrono
clock - #126 #127 avoid propagation of
-std=gnu++11
to user targets - #131 #132 fixed build for MIPS
- #137 fixed Android build
- #145 support building with QNX 7.0
Warnings
v2.0.1: Clang build fix, high-dpi displays fix, minor fixes
v2.0.0: Arbitrary values, Snapshot, Bug fixes
Core changes
- (#31) Added possibility to save user metrics (a.k.a. arbitrary values)
#include <easy/arbitrary_value.h>
- Use
EASY_VALUE("Name", variable_ref);
// See more options ateasy/arbitrary_value.h
- Added file converter (currently only .prof to .json is supported)
- (#75) There is no need anymore to wait all threads finish their opened frames when dumping blocks to file/stream
- (#81) Added CMake option to choose function names format
- Added CMake option
EASY_PROFILER_NO_GUI
to build withoutprofiler_gui
- (#48) Minimized paddings in .prof file header
- Bug fixes
- Fixed
EASY_ENABLE_ALIGNMENT
build error - (#75) Fixed UI freeze when hitting
Cancel
button while transmitting profiled blocks from profiled application to the UI - Mac: Added support for building with Apple LLVM clang version < 8.0
- Add support for building with pre 2016 Apple LLVM clang
- Automatically detect Apple clang that do not support thread_local
- Clarify clang thread_local support code comment
- (#72) Windows: VS2017 build fix
- Unix: Context switch logger gets the processor cycle counter instead of time of a day
- Other bug fixes
- Fixed
UI changes
- (#31) Added arbitrary values viewer
- (#100) Added possibility to zoom in selected region
- (#91) Added possibility to take a snapshot. Now you can save selected area to separate file. Works both with blue selection (hold right mouse button + move) and black ruler (double-click + hold mouse button + move)
- Improved UI styles
- Blocks histogram (under Diagram scene) is now resizeable
- (#89) Added viewport info widget. See [Settings] -> [See viewport info]
- Bug fixes
- Fixed hierarchy building for zero duration blocks - events and arbitrary values are always visible
- (#89) Trying to fix high-dpi displays problem (maybe not fixed 😞 )
- Other bug fixes
v2.0.0-beta.1
Beta version of release v2.0.
Needed to test fonts issue on high-dpi displays.
v1.3.0 - MacOS support and bug fixes
Core
- MacOS support!
- Added new API functions:
bool profiler::isCapturing()
- alias forisEnabled()
void profiler::startCapture()
- alias forEASY_PROFILER_ENABLE
void profiler::stopCapture()
- alias forEASY_PROFILER_DISABLE
- Added new field in
BlocksTreeRoot
struct - Added version argument in
fillTrees...
functions - Added
SerializedCSwitch
struct - Added
EASY_FORCE_INLINE
macros thread_id_t
change touint64_t
with backward compatibility
GUI
v1.2.0
Core
- Added non-scoped block functionality for beginning and ending block manually from different functions. To open block use
EASY_NONSCOPED_BLOCK
macro, to close block useEASY_END_BLOCK
. See #29 for more information - Added new API functions for getting current time (ticks) and converting it to nano- and microseconds:
timestamp_t profiler::currentTime()
returns current time in ticks;profiler::toNanoseconds()
andprofiler::toMicroseconds()
for converting ticks to nano and microseconds;
- Add following cmake options to easy_profiler_core
CMakeLists.txt
:BUILD_WITH_CHRONO_STEADY_CLOCK
- usestd::chrono::steady_clock
as a timer. By default isOFF
BUILD_WITH_CHRONO_HIGH_RESOLUTION_CLOCK
- usestd::chrono::high_resolution_clock
as a timer. By default isOFF
If both is set to ON
- use std::chrono::high_resolution_clock
.
If both is set to OFF
- use QueryPerformanceCounter/rtdsc
timer.
Note: Do not forget to clean CMakeCache
file if you've changed an option.
- Calculating total children duration per thread/frame/parent
GUI
- Displaying "total self %" (duration % excluding all children) per thread/frame/parent
- Changed "Connect" button logic: if connected to the profiled application then additional click performs disconnect. Changed appropriate tool-tip.
- Fixed displaying unicode text in popup and at histogram window
- Display current opened file name at the window title;
- Suggest save file name: using current system date and time as file name;
- Checking for unsaved network session before opening new file and before exit.
- Added "Use Right Mouse Button..." hint to Hierarchy window. See #35 #33
- Changed popup position on Diagram - now it is better positioned for small window also.
- Added additional field "Self" to the popup on Diagram. Self stands for "self duration" (duration excluding all children).
- Clear FPS Monitor contents after successful connect.
- Minor fixes
New functionality
General
- Relicensed under either of MIT or Apache v2.0 at your option
Core
- Added following functions:
bool profiler::isMainThread()
- Returns true if current thread has been marked as Main. Otherwise, returns falseprofiler::timestamp_t profiler::this_thread_frameTime()
returns last frame duration for current threadprofiler::timestamp_t profiler::this_thread_frameTimeLocalMax()
returns local max of frame duration for current thread. Local max is maximum frame duration since last frameTimeLocalMax() callprofiler::timestamp_t profiler::this_thread_frameTimeLocalAvg()
returns local average of frame duration for current thread. Local average is average frame duration since last frameTimeLocalAvg() callprofiler::timestamp_t profiler::main_thread_frameTime()
returns last frame duration for main threadprofiler::timestamp_t profiler::main_thread_frameTimeLocalMax()
returns local max of frame duration for main thread. Local max is maximum frame duration since last frameTimeLocalMax() callprofiler::timestamp_t profiler::main_thread_frameTimeLocalAvg()
returns local average of frame duration for main thread. Local average is average frame duration since last frameTimeLocalAvg() callbool profiler::isEnabled()
- returns true if profiler is enabledbool profiler::isEventTracingEnabled()
- returns true if event tracing is enabledbool profiler::isLowPriorityEventTracing()
- returns true if event tracing has low prioritybool profiler::isListening()
- returns true if profiler is listening a signal for capturing blocks
- Some errors fixed
GUI
- Added real-time FPS Monitor which shows current max/avg frame time in GUI even if profiler is disabled. You just need to connect to the profiled app. You can close (hide) FPS Monitor and it would not send network requests to the profiled application anymore. You can increase/decrease FPS Monitor requests interval in "Settings -> FPS Monitor -> Request interval, ms". Right click on FPS Monitor window to show context menu in which you can clear contents or hide FPS Monitor.
- Added possibility to change Expected-frame-time via histogram: use Any-modifier (Shift, Ctrl, Alt) + RMB-click
- Added manual version of histogram boundary control:
- Shift + LMB-click (or Wheel) change top boundary
- Ctrl + LMB-click (or Wheel) to change bottom boundary
- Added possibility to adjust selection ruler boundaries (both black and blue rulers)
- Show capture dialog immediately if profiling session has been already enabled. You may now profile everything from the application launch (initialization etc.).
Note: "Frame" means every top-level block (block without parents).
Minor fixes
- Improved performance
- MinGW compatibility
- CMake package files in correct subdirectory
Add cmake package layout
Add cmake/easy_profiler
directory. You can set CMAKE_PREFIX_PATH
and use find_package(easy_profiler)
Initial release
v1.0.1 (GUI) Fixed wrong hierarchy tree building in "Plain mode" (not all bl…