mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-23 18:32:51 +00:00
109 lines
3.4 KiB
Text
109 lines
3.4 KiB
Text
![]() |
KCachegrind / QCachegrind
|
||
|
-========================
|
||
|
|
||
|
{K,Q}Cachegrind is a KDE/Qt GUI to visualize profiling data.
|
||
|
It's mainly used as visualization frontend for data measured
|
||
|
by Cachegrind/Callgrind tools from the Valgrind package, but
|
||
|
there are converters for other measurement tools available.
|
||
|
|
||
|
Features
|
||
|
|
||
|
* direct support for profiles generated by Cachegrind/Callgrind
|
||
|
* support for arbitrary event types and derived event types
|
||
|
* sorted function list, with grouping according to ELF object/source
|
||
|
file/symbol namespace (such as C++ classes)
|
||
|
* correct handling of recursive cycles (similar to GProf)
|
||
|
* various visualization views for a selected function, such as
|
||
|
- treemap in caller/callee direction
|
||
|
- call graph around function
|
||
|
- source & assembly annotation
|
||
|
|
||
|
|
||
|
Hmm. What is stuff good for?
|
||
|
----------------------------
|
||
|
|
||
|
Any work in improving the performance of a program should be
|
||
|
started with measuring the performance characteristics of the
|
||
|
optimized binary, using representative input data. This process
|
||
|
is called "Profiling". Any other way for performance optimization
|
||
|
usually just wastes developer time.
|
||
|
Profile measurements show whether optimization is needed at all,
|
||
|
and what improvement can be expected. Further, it pinpoint at
|
||
|
functions and source lines where most time is spent, i.e. where an
|
||
|
improvement has most influence on allover runtime.
|
||
|
|
||
|
{K,Q}Cachegrind visualizes profile measurement data. Example of an
|
||
|
easy to use profile measurement tool (no source modifications and
|
||
|
recompilation is required, as well as no root access) are the
|
||
|
cache simulators Cachegrind and Callgrind from the Valgrind toolset.
|
||
|
While {K,Q}Cachegrind directly supports the formats of these
|
||
|
profiling tools, converters are available to allow to import data
|
||
|
from other profiling tools, too.
|
||
|
|
||
|
|
||
|
|
||
|
Compilation and Installation
|
||
|
-===========================
|
||
|
|
||
|
|
||
|
QCachegrind
|
||
|
-----------
|
||
|
|
||
|
Requirements:
|
||
|
* Qt5.x (x >=0) or Qt4.y (y >=5) (earlier versions not tested)
|
||
|
* Any platform supported by Qt (Linux, Windows, Mac OS X, ...)
|
||
|
|
||
|
Compilation (from base directory):
|
||
|
|
||
|
qmake; make
|
||
|
|
||
|
To not build in the source directories, do:
|
||
|
|
||
|
mkdir build; cd build; qmake ../qcg.pro; make
|
||
|
|
||
|
The build includes the command line tool "cgview".
|
||
|
|
||
|
Copy the resulting "qcachegrind" binary from the build directory into
|
||
|
your $PATH. For better desktop integration, it should be enough to
|
||
|
copy the .desktop file and icons into standard places, such as:
|
||
|
|
||
|
sudo install -m 755 qcachegrind/qcachegrind /usr/local/bin
|
||
|
sudo install -m 644 qcachegrind/qcachegrind.desktop \
|
||
|
/usr/local/share/applications/
|
||
|
sudo install -m 644 kcachegrind/hi32-app-kcachegrind.png \
|
||
|
/usr/local/share/icons/hicolor/32x32/apps/kcachegrind.png
|
||
|
sudo install -m 644 kcachegrind/hi48-app-kcachegrind.png \
|
||
|
/usr/local/share/icons/hicolor/48x48/apps/kcachegrind.png
|
||
|
|
||
|
|
||
|
KCachegrind
|
||
|
------------
|
||
|
|
||
|
Requirements:
|
||
|
* KDE 4.3 or higher: kdelibs development packages (libs & headers)
|
||
|
* CMake
|
||
|
|
||
|
Commands (from base directory):
|
||
|
|
||
|
cmake .; make; make install
|
||
|
|
||
|
To not build in the source directories, do:
|
||
|
|
||
|
mkdir build; cd build; cmake ..; make; make install
|
||
|
|
||
|
The build also compiles the command line tool "cgview" and "qcachegrind",
|
||
|
the Qt-only version of KCachegrind. However, these are not installed.
|
||
|
If you want to also install qcachegrind, see instructions above.
|
||
|
|
||
|
|
||
|
Usage & Help
|
||
|
-===========
|
||
|
|
||
|
{K,Q}Cachegrind has detailed "What's this?" help for
|
||
|
each GUI part. For further help, see quick start pages
|
||
|
on kcachegrind.sf.net
|
||
|
|
||
|
|
||
|
|
||
|
Josef Weidendorfer
|