Improving KDevelop startup times

Amilcar do Carmo Lucas amilcar at kdevelop.org
Fri May 1 21:17:01 UTC 2009


Hi Dimitar,

The correct way of reaching the developers is to subscribe to the
kdevelop-devel mailing list as explained in:
http://www.kdevelop.org/index.html?filename=mailinglist.html

I'm forwarding this email there, but you should subscribe to get the answers.

Regards,
Amilcar Lucas

On Friday 01 May 2009 16:02:50 you wrote:
> Dear Mr. Lucas,
>
> first of all I want to congratulate you on the great work you have done
> with KDevelop. I think this is the best IDE for Linux.
>
> I am currently writing my Bachelor thesis at the Jacobs University in
> Bremen, Germany with a topic "Improving application startup time". As a
> case study I am trying to make KDevelop start faster.
>
> Let me briefly explain my approach: the core idea is that in a bigger
> application the user will not use most functionality in the first few
> seconds after the program is started. Therefore it is possible to give
> an impression of faster startup if the application displays the main
> windows as soon as possible to allow interaction while additional
> modules are still being loaded in the background.
>
> In the case of KDevelop I already have a working implmenentation of the
> above concept. Modifying the code of version 3.5.4 is extremely easy and
> involves only a very few lines:
>
> In src/main.cpp there is just one new line to be added. Right before the
> first call to
>    app.processEvents();
> one can first call:
>    TopLevel::getInstance()->main()->show();
> Thus the main window will be shown very early in the start up process
> and will give the user the impression of a fast load.
>
> To provide for interaction while the rest of Kdevelop keeps loading one
> more modification is needed in src/plugincontroller.cpp. Right before
> this function returns:
>    PluginController::loadPlugin( const KService::Ptr &service )
> one can call:
>    KApplication::kApplication()->processEvents();
> This will allow the application to process all user events in between
> loading plugins. My tests have shown that loading the plugins takes the
> most time, once the KApplication object is created.
>
> The last thing one might want to do with this approach is suppress the
> splash screen since it is not needed in this case.
>
> I've also modified the code to show timing information on startup. When
> doing different test runs I noticed that the above trick gives the
> impression that the application loads about 3 times faster. Both in cold
> and warm start scenarios. Of course in reality the program does not
> really start faster, but the user experience is improved.
>
> Your comments on this implementation would be greatly appreciated. Do
> you like this idea? What do you think of my modifications to Kdevelop?
> Do you think this can be implemented in the upcoming release? If not,
> can you suggest a way to improve the idea? With your permission I would
> like to include your opinion in the final report of my thesis.
>
> I would be very excited to open a discussion on this topic. Should you
> need more information from my side just send me an e-mail. I will be
> happy to contribute in any way I can.
>
> Regars,
> Mitko
>
> P.S. If you think I should talk to someone else about this, please give
> me their contact information or just forward my e-mail.

-- 
--
Amilcar Lucas
KDevelop developer/webmaster




More information about the KDevelop-devel mailing list