[Lazarus] RFC: remove StayOnTop for splash screen

Mattias Gärtner nc-gaertnma at netcologne.de
Mon Mar 1 17:33:21 CET 2010


Zitat von Flávio Etrusco <flavio.etrusco at gmail.com>:

> On Mon, Mar 1, 2010 at 6:31 AM, Mattias Gaertner
> <nc-gaertnma at netcologne.de> wrote:
>> On Mon, 1 Mar 2010 05:55:43 -0300
>> Flávio Etrusco <flavio.etrusco at gmail.com> wrote:
>>
>>> >>
>>> >> That's another story. I'm not proposing to remove the splash screen
>>> >> (actually Paul taught there's already a parameter or setting to remove
>>> >> it. i'm proposing is simply to remove the stayontop, which serves no
>>> >> purpose...
>>> >> The delay seems to be caused by codetools loading the files...
>>> >
>>> > Why do you think so?
>>> >
>>> > Mattias
>>> >
>>>
>>> I guess you're asking about the codetools part? TBH it's a wild guess.
>>> It takes much longer when the active project is Lazarus and I have
>>> several files open and it's waaaay faster on warm reload/the files are
>>> cached.
>>
>> Maybe you have enabled Form editor / open designer on open unit?
>>
>> When I start the IDE with a hundred files open then I get the following
>> from gprof. As you can see codetools is hardly measurable. It is
>> as expensive as loading the splash image (less than 2%).
>> Synedit needs some optimizations.
>> Please test too and see what you get.
>>
>>
>>  6.94      0.10     0.10  7717033     0.00     0.00  
>>  SYNEDITKEYCMDS_TSYNEDITKEYSTROKE_$__GETCOMMAND$$TSYNEDITORCOMMAND
>>  4.86      0.17     0.07                              
>> CLASSES_TFPLIST_$__GET$LONGINT$$POINTER
>>  4.17      0.23     0.06                              
>> SYSUTILS_COMPAREMEMRANGE$POINTER$POINTER$LONGWORD$$LONGINT
>>  3.47      0.28     0.05  7717033     0.00     0.00  
>>  SYNEDITKEYCMDS_TSYNEDITKEYSTROKES_$__GETITEM$LONGINT$$TSYNEDITKEYSTROKE
>>  3.47      0.33     0.05                             FPC_ANSISTR_SETLENGTH
>>  2.78      0.37     0.04                              
>> LAZ_DOM_TDOMNODE_$__FINDNODE$ANSISTRING$$TDOMNODE
>>  2.08      0.40     0.03   863797     0.00     0.00  
>>  SYNHIGHLIGHTERPAS_TSYNPASSYN_$__NEXT
>>  2.08      0.43     0.03   268090     0.00     0.00  
>>  SYNHIGHLIGHTERPAS_TSYNPASSYN_$__KEYHASH$$LONGINT
>>  2.08      0.46     0.03                             FPC_PUSHEXCEPTADDR
>>  2.08      0.49     0.03                             fpc_ansistr_decr_ref
>>  1.39      0.51     0.02   237132     0.00     0.00  
>>  SYNEDITTEXTTRIMMER_TSYNEDITSTRINGTRIMMINGLIST_$__GET$LONGINT$$ANSISTRING
>>  1.39      0.53     0.02      319     0.06     0.53  
>>  KEYMAPPING_TKEYCOMMANDRELATIONLIST_$__ASSIGNTO$TSYNEDITKEYSTROKES$TCUSTOMFORMCLASS
>>  1.39      0.55     0.02                              
>> CLASSES_TCOMPONENT_$__NOTIFICATION$TCOMPONENT$TOPERATION
>>  1.39      0.57     0.02                              
>> CLASSES_TLIST_$__GET$LONGINT$$POINTER
>>  1.39      0.59     0.02                              
>> CLASSES_TLIST_$__GETCOUNT$$LONGINT
>>  1.39      0.61     0.02                              
>> CWSTRING_CONCATCHARTOANSISTR$CHAR$ANSISTRING$LONGINT
>>  1.39      0.63     0.02                              
>> CWSTRING_UPPERANSISTRING$ANSISTRING$$ANSISTRING
>>  1.39      0.65     0.02                             FPC_SETJMP
>>  1.39      0.67     0.02                              
>> FPIMAGE_TFPCUSTOMIMAGE_$__SETCOLOR$LONGINT$LONGINT$TFPCOLOR
>>  1.39      0.69     0.02                              
>> FPREADPNG_TFPREADERPNG_$_DODECOMPRESS_DECODE
>>  1.39      0.71     0.02                              
>> SOURCELOG_TSOURCELOG_$__BUILDLINERANGES
>>
>>
>> Mattias
>>
>
> I'll try to run with gprof, thanks. Also in next time I make such claims ;-)
> FTR: No, I have "open designer on open unit" disabled.
> Did you try this on without files being in cache?

When the files are not in the OS cache, then measuring with gprof does  
not make much sense.
The biggest thing is to load the 100mb lazarus executable.
And if you start lazarus for the first time after installation, then  
the IDE scans the FPC source directory, which might take quite some  
time on slow disks or even worse on network file systems.


> Guess I'll have to do some work in SynEdit then. It used to be my area
> of expertise after all ;) But the code in Lazarus is a (almost)
> completely different beast, and maybe not much can be done with
> codefolding wihout making some concessions...


Mattias






More information about the Lazarus mailing list