Revision [32829]
This is an old revision of gtkdialogDocTips5 made by zigbert on 2020-07-22 22:27:42.
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.