› valgrind 
» Massif Visualizer 0.3 released
Sun, 11/20/2011 - 19:17
Hey all!
I’m happy to announce the release of Massif-Visualizer 0.3. You can download the sources here:
http://download.kde.org/download.php?url=stable/massif-visualizer/0.3/src
Highlights of this release:
- translations into 18 different languages
- basic support for hiding of functions via context menu
- basic support for custom allocators
- configurable precision of memory consumption display
- various optimizations, bug fixes and other improvements. take a look at the changelog for more information
Future Development
It took me much too long to get this release out and hope to do better in the future. Current git master already contains some new patches - try it out! I especially like the improved display of the callgraph which now aggregates the tails of the callgraph tree, i.e. the end of the backtrace which mostly starts main() etc.
If you have ideas for the future, or have any issues with Massif-Visualizer, report a bug on https://bugs.kde.org/ .
Packaging
I don’t want to waste my time on packaging and instead concentrate on development. So here again a public plead to distributors: Please include Massif-Visualizer in future releases and let users download it seamlessly through your package manager. Starting with this release, Massif-Visualizer releases will follow the usual KDE procedure and the source tarballs will be hosted on the KDE mirrors. Hope this makes it simpler for packagers!
Ubuntu users can use Aurélien Gâteau’s PPA: https://launchpad.net/~agateau/+archive/ppa . ArchLinux users you can get it via AUR, and Gentoo also has an overlay for it it seems. I also think that OpenSUSE has a package for it. Please add infos for $your-distro in the comments below.
Cheers
» Should all callgrind bottlenecks be optimized?
Thu, 12/09/2010 - 19:12
Hey all,
I’d like to have some feedback from you. Consider this code:
#include <iostream> #include <memory.h> using namespace std; struct List { List(int size) { begin = new int[size]; memset(begin, 0, size); end = begin + size; } ~List() { delete[] begin; } int at(int i) const { return begin[i]; } int size() const { // std::cout << "size called" << std::endl; return end - begin; } int& operator[](int i) { return begin[i]; } private: int* begin; int* end; }; int main() { const int s = 1000000; for (int reps = 0; reps < 1000; ++reps) { List l(s); List l2(s); // version 1 for ( int i = 0; i < l.size(); ++i ) { // version 2 // for ( int i = 0, c = l.size(); i < c; ++i ) { l2[i] = l.at(i);; } } return 0; }
If you run this through callgrind, you’ll see quite some time being spent in l.size(), the compiler doesn’t seem to optimize that away. Now, fixing this “bottleneck” is simple, look at version 2. That way, l.size() will only be called once and you’ll save quite some instructions according to callgrind.
Now, my first impression was: Yes, lets fix this! On the other hand, this optimization is not really that noticable in terms of user-experience. So my question is: Is it worth it? Should everything one sees in callgrind that is easily avoidable and optimizable (like the stuff above) be optimized?
I ask because QTextEngine e.g. doesn’t use the optimized version and I wonder whether I should create a merge request for that. According to callgrind the difference is noticeable: One of my testcases shows ~8% of the time being spent in QVector<QScriptItem>::size() (via QTextEngine::setBoundary()). In Kate the difference is even bigger with ~16% of the time being spent in QList<QTextLayout:.FormatRange>::size() via QTextEngine::format(). Hence I’d say: yes, lets optimize that. I just wonder whether it’s noticeably in the end.
Bye
EDIT: See this comment thread for an answer.
» Massif Visualizer 0.2 released
Sun, 11/07/2010 - 00:16
Hey all!
I’m happy to release Massif Visualizer v0.2. This is mainly a “fix the build-system” release, no new features have been added.
You can download it here: http://kde-apps.org/content/show.php?content=122409
Mac Support
Thanks to the reports by Chris Jones it’s now possible to build and use Massif Visualizer on Max OS X, see e.g.:
http://www.hep.phy.cam.ac.uk/~jonesc/massif-visualizer-OSX-1.png
http://www.hep.phy.cam.ac.uk/~jonesc/massif-visualizer-OSX-2.png
He has also submitted the portsfile for inclusion in Macports: https://trac.macports.org/ticket/27168
KGraphViewer now optional
I’ve made the KGraphViewer dependency optional, if anyone does not want it (even though this removes like 50% of the tools features).
KDE Infrastructure
I’ve also prepared the steps for moving Massif-Visualizer into KDE Extragear and asked kde-devel for review. I already use the KDE infrastructure now:
- Website:
- https://projects.kde.org/projects/playground/sdk/massif-visualizer
- Git:
git clone git://git.kde.org/massif-visualizer- Bug tracker:
- https://bugs.kde.org/enter_bug.cgi?product=massif-visualizer&format=guided
- Mailing List:
- https://mail.kde.org/mailman/listinfo/massif-visualizer
- massif-visualizer@kde.org
This also means that I’ll shortly get translations by the awesome KDE-i18n-Team, so stay tuned for a 0.3 including translations!
Open Suse Buildservice
I’ve also spent quite some time today battling with OBS and can provide at least packages for Fedora, Mandriva and Open Suse now. I’m still waiting for help on the remaining issues and once they are resolved I’ll add the remaining packages.
Changelog
ChangeLog for massif-visualizer v0.2 ==================================== * Milian Wolff: set version to 0.2 * Milian Wolff: fix conditional * Milian Wolff: make kgraphviewer dependency optional * Milian Wolff: fix FindKGraphViewer.cmake * Milian Wolff: fix .po name * Milian Wolff: remove some esoteric cli option for XGETTEXT that does not make any sense according to Albert * Milian Wolff: fix: install libs to make sure they can get loaded on OSX e.g. * Milian Wolff: fix compile warning about init order, improve style by having just one init per line * Milian Wolff: add export macros everywhere, make visualizer helper use the Massif namespace as well * Milian Wolff: add Messages.sh
» Massif Visualizer 0.1 released
Tue, 11/02/2010 - 19:06
Good news everyone!
Since Gaël finally came around to release KGraphViewer 2.1, I can go ahead and do the same for Massif Visualizer!
Download Massif Visualizer 0.1
This is the first release and I would be very happy if more users gave me their feedback. I intend to move to git.kde.org soon in order to leverage the KDE infrastructure (mostly translations, bug tracker, releases)… This also means: There are no translations yet! I also intend to update my OBS repository to provide packages for the first release.
Stay tuned for updates.
» Massif Visualizer - now with user interaction
Sat, 03/13/2010 - 16:55
Just a quick status update: Massif Visualizer now reacts on user input. Meaning: You can click on the graph and the corresponding item in the treeview gets selected and vice versa. It’s a bit buggy since KDChart is not reliable on what it reports, but it works quite well already.
Furthermore the colors should be better now, peaks are labeled (better readable on bright color schemes, I’m afraid to say…), legend is shown, …
Now lets see how I can make the treeview more useful!
