MindManager CPU and Memory Usage
I want to thank Eric Mack for his recent post on MindManager’s CPU usage. Between Eric, Doug Sorocco and participants in the Mindjet User Forum and the Yahoo Mindjet User Group, we have heard loud and clear that the issue of MindManager using too much CPU and memory is an issue some of our customers would like to see us address more directly. (I also want to thank everyone who filled-in our recent survey on new features.)
As Mindjet VP of Engineering, the “bug” stops here. We want both as a matter of customer service and as a matter of professional pride to see to it that MindManager operates as efficiently as we can make it.
Here is a bit of background:
The issue we already know about is in the idling behavior of MindManager. It relates to how toolbar buttons are enabled or disabled. When idling Windows sends periodic message to MindManager. We use these messages to check that all our toolbar buttons are in the correct state. This is a standard Window programming practice, and we have been doing it for years. The problem is that we recalculate the button states every time, even when nothing has changed. Over time we have added more toolbars, we have more add-ins, and we have bigger and bigger maps. All of this makes the button state calculation take longer and longer. The calculation takes longer if a topic deep in a branch is currently selected.
From what I have read in the users groups, the use of some add-ins seem to aggravate or cause the issues of CPU utilization when idle and memory usage. We already know of a way users can remedy this situation—in some cases. The challenge is to be able reproduce the circumstances in which either or both of these occur. We can fix this problem: We know what to do. It is not a small job, and needs a lot of thorough testing.
At this point I cannot, in all honesty, promise a fix in the immediate future—but rest assured it is now firmly on our radar. I just want everyone to understand that we allocate 25% of our development efforts to improving performance. For instance, in MindManager 6 Windows Service Pack 1, we used quite a bit of our resources to completely rebuild our map-loading code to greatly speed this up in certain cases (we changed our XML parsing and validation strategy). We also sped up the Outlook Linker by adding a workaround for a problem in Outlook relating to certain types of Outlook folder. Going forward, we can address the idling issue – and, in the process, see if we can get better at managing the interactions with MindManager add-ins. With your help – those of you who are experiencing this memory usage issue – we will find a solution.
Incidentally, some people have asked what happens to Windows crash reports, on the rare occasions MindManager might crash. They go to Microsoft, and as of now we don’t get to see them. However, our support team has some tools which help us in pin-pointing any such problems (for example Microsoft’s Dr. Watson.)
So the main thing we need to start to figure this out is very specific information from you, the users, who are experiencing this issue. The question is: What is the best way for you to get that information to us. We could address this in this blog, but I suspect that this will quickly get way too technical for most people. Or we could address it in the forums. The best way from our perspective would be for you to document as best you can the conditions under which the CPU usage spikes (with sample maps and preferably system configuration), and send it to us via our support center (email@example.com). We have systems in place in the center to efficiently manage technical issues such as this. I promise that we will try to reproduce your problem, and if we cannot we will follow-up with you. Then we will have a solid set of tests for our solution to the problem. I want to be able to verify that our fix really has solved your problems, and the collected cases will let us do that.
But I am open to your suggestions: You brought this issue to our attention, and I suspect you may have given some thought as to how we might best address it. We might, for instance, arrange a conference call/web conference in which we pull a number of people together at once to discuss this in real time.