CPU hogging in the current master

Anton Lundin glance at acc.umu.se
Tue Sep 24 06:42:37 UTC 2013


I'm on Malta diving so i might be quite unresponsive, but I might take a look at it during some off gassing.

//Anton - writing on his cell

Dirk Hohndel <dirk at hohndel.org> wrote:
>On Tue, 2013-09-24 at 13:04 +0300, Lubomir I. Ivanov wrote:
>> i've noticed that particular dives in the Qt divelist make the
>> application non-responsive for n seconds.
>> 
>> test case for a couple of builds - Qt (master) and GTK (binary from
>> 12.may.2013):
>> - disable all extra profile plot settings
>> - import all test dives
>> - select dive #20 (20th test dive...)
>> - measure render time, roughly
>> 
>> with this old GTK build it takes milliseconds, with Qt it takes >5
>seconds.
>> 
>> after some testing i've narrowed down the cause to be in the
>"backend"...
>> profile.c: calculate_deco_information()
>> while(next_stop >= 0) {
>> ...
>> 
>> where 'next_stop' seems to update thousand of times between 3000 and
>0
>> for this dive.
>
>This is the TTS (time to surface) calculation - and reading the code
>I'm
>a bit confused by what it is trying to do.
>
>> it seems that this portion of code was written by Anton Lundin in
>> july, so i've CCed him in this email.
>> 
>> git blame profile.c -L 1091,1107
>> 35356e36 (Anton Lundin 2013-07-05 15:19:41 +0200 1091)
>> 
>> could this algorithm be somehow improved?
>
>Clearly July wasn't my best month as maintainer... I should have
>scrutinized this a bit more...
>
>Let's see what Anton has to say, otherwise I can look at reimplementing
>this. It should be pretty easy to simply cache the values instead of
>constantly walking forward and backward.
>
>/D



More information about the subsurface mailing list