[Andreas Kupries]: The following is a mail from
[Christian Wegehaupt], placed here with his permission.
Right now I will just place it into the wiki, formatting
and cleaning up the english and style will come later.
----
Hi Jeff!
There are lot of discussions within CLT on "enhancing" Tcl by Qt,
OO-packages w/c++ etc. etc.
All the experts forget a ''MEMORY FOOTPRINT'' calculation.
Let's compare...
O.K., I know that the different packages might use different memory allocation strategies etc., but comparing the packages as shipped or compiled by default is, what's the enduser is seeing...
Test system:
ATHLON 500, SuSE6.3, Linux_2.2.18, egcs-2.91.66, X -bpp 16
'''1.''' Everybody knows Tk's "floorplan" and the "top" command:
%| APPLICATION "floorplan" | memory in KB |%
&| wish4.2 ->demo/widget/floorplan | 2188 |&
&| wish8.0.5 ->demo/widget/floorplan | 2992 |&
&| wish8.4a2 ->demo/widget/floorplan | 3076 |&
&| perl-5.004/pTK "widget" demo <
> as shipped /w SuSE 6.3 | 7063 |&
&| python1.5 wish.py tk8.0.5 <
> -> demo/widget/floorplan | 4584 |&
&| python2.0 wish.py tk8.4a2 <
> -> demo/widget/floorplan <
> only [tkinter] compiled in w/o "-g" | 3860 |&
''MY'' conclusions:
* "floorplan" can be taken as an GUI to a ''LOGISTIC-'' or ''FACTORY MANAGEMENT'' application...
* There's ''NO'' speed difference visible
* wish ''ALWAYS'' starts faster
* in case of memory shortness wish4.2 is sufficient: e.g. Realtime Linux on an 486 16Meg
'''2.''' Lets compare Mesa's "gears"
All programs are doing the same OpenGL-calls generating the "gears" while the user interface is different. For comparsion the screen-size is reduced to 300x300. ([SDL] = Simple DirectMedia Library)
%| APPLICATION "gears" | memory in KB |%
&| Mesa-3.4-glut3.7 | 2626 |&
&| Mesa-3.4-SDL-1.1.7 <
> `SDLgears-1.0.2.tar.gz` from <
> http://www.libsdl.org/opengl/ | 2044 |&
&| qt-2.2.1-Mesa-3.4 <
> (`/usr/local/qt-2.2.1/examples/gear`) | 5392 |&
&| Tcl/Tk8.4a2/frustum0.1-Mesa-3.4 | 4400 |&
''MY'' conclusions:
* Mesa-3.4-SDL-1.1.7 is about 20% ''FASTER'' than Mesa-3.4-glut3.7 !
* A Tcl/qt-2.2.1 package would require ''MUCH'' more memory ignoring QT's problems with the color-managent on 256 color systems.
* Tcl/Tk8.4a2/frustum0.1-Mesa-3.4 as a "scripting language" offers ''MUCH MORE'' than the compiled "competitors"
'''3.''' Some other REAL LIFE applications
%| APPLICATION | Memory in KB |%
&| [vtk] /w Tcl/Tk 8.0.5 SuSE6.3 <
> (OO and [c++]) | 16876 ''after start'' |&
&| [gracer]0.1.5 /w Tcl/Tk 8.0.5 Mesa-3.4 | 3572 ''after start '' |&
&| [tkgate]1.5p2 /w Tcl/Tk 8.4a2 | 3452 ''after start'' |&
&| [iwidgets]3.0.1/demos/watch Tcl/Tk 8.4a2 | 3248 |&
&| hv (Hipps HTML Viewer [tkhtml]) | 2372 ''after start'' |&
&| [BrowseX] 1.0.28 /w Tcl/Tk 8.3 <
> [img]1.2.4, [tkhtml] .... | 4380 ''after start'' |&
&| BrowseX 1.2.1 /w Tcl/Tk 8.3 | 5664 ''after start'' |&
&| netscape 4.7 | 13224 ''after start'' |&
&| Tcl/Tk 8.3 application /w BLT,memchan and <
> a "listbox" loaded /w 86855 lines | 10924 |&
&| [voodoo] /w Tcl/Tk 8.3 (C++/Tcl application) <
> after loading a 59-object diagram <
> (tested on AMD K6-II 400, 128 MB RAM, <
> Debian woody, g++ 2.95.3) | 4624 |&
'''MY RESULTS:'''
* Speed is not all...
* Apart from differences in "features", Tcl/Tk seems to be always the "best choice".
* OO in combination with c++ is ''WASTING'' resources without any visible advantage...
* gracer0.1.5 and tkgate1.5p2 for me are ''CLASSICAL'' examples how efficient Tcl/Tk can be embedded into an application...
* Peter MacDonald's BrowseX demonstrates how efficient the ''EXISTING'' packages and apps can be combined to an valuable Browser. Works fine on my old 486-16Meg, while compiling qt-2.2.1 on my old 486-16Meg... it's a shame.
* We should provide available C-written Tk-extensions like Hipp's plot3d- and tkhtml-widget in a similar way like your great TkTable to SourceForge...
* We should continue optimising Tk's existing widgets...
* Where are comparable applications written in Perl or Python ???
Happy New Year!
Christian Wegehaupt
----
'''Other notes:'''
* Using C++ for what it's good at (efficient, memory-compact OO) and Tcl for what it's good at (high-level view of algorithms, powerful GUI primitives) can yield surprisingly compact results;
* From my informal tests, however, it is not possible to use the Tk APIs in a really efficient manner from C or C++; the Tk API is too limited for that;
* C++, used properly, does not waste any memory whatsoever; in fact, it allows very precise control of resources;
* Tcl/Tk is valuable as a script language, but it's even more so as a part of a hybrid application.
-- ''BGE''
----
!!!!!!
%| [Category Object Orientation] |%
!!!!!!