HomePage > Software Index > Development > gtkdialog > Tips and Tricks

5. Speed issues

Gtkdialog is not a fast gui-lib. If you are building a gui where speed matters, please check the following notes.

For an unknown reason, it is much faster to start your gtkdialog-xml-code from a file than from a variable.
gtkdialog --file=filename
gtkdialog --program=variable

The file alternative is highly recommended if your xml-code is getting complex.

Progressbars can suck your cpu-power. Adding a reasonable sleep value in the loop helps a lot.

Run large calculations as a background process. pMusic builtin filebrowser (version 0.9) first shows songs in the directory, then it starts a background process to find meta information of the songs. When finished, it renders the song-list once again, now with complete information. How to use a background process with gtkdialog is explained in the chapter 'gtkdialogDocTips3 Let external code act on your gtkdialog gui'.

Even if gtkdialog is slow, your bash-code might make it MUCH slower. Be careful with the use of subshells, and slow commands such as sed, ps, expr, cat ... This is of course most important when building a loop.

The comparison of code shows how to do the same operation in 2 different ways. The speed differs a lot. First an example why you should avoid the command cat, then why never use expr if speed matters. My system needed 4 seconds to calculate 1+1 thousand times with expr. Using the builtin bash command it took 'no time'.

time for I in $(seq 1 1000); do B="`cat /tmp/tmp`"; done 
real  0m3.095s
time `IFS=$'\n'; for I in $(seq 1 1000); do B=($(<"/tmp/tmp")); done`
real  0m0.927s

time for I in $(seq 1 1000); do expr 1 + 1; done
real  0m4.286s
time for I in $(seq 1 1000); do A=$((1+1)); done
real  0m0.032s


There are many ways of building a gui. The builtin file browser/filesearch in pBurn was updated from version 2 to pBurn 3. The code has shrunk from 3110 to 997 chars. It does exactly the same, and the speed improvement is notable.


Categories
CategoryGtkdialog
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki