[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Garnet 3.0 Speedup anyone?

You wrote:
> I have ported Garnet 2.2 to ECL.
> However I decided that Tk would be a better alternative: I have a prototype
> which is indeed much faster than Garnet.

Of course, Tk is faster.

But to comparing the class-based, imperative, Tk Widget library to
the protoyp-instance based, constraint-oriented amalgam of UI tools
called Garnet is like comparing an assembler to a 4GL system. They
are on a completely different semantic level.
    It's like comparing a McDonald's hamburger to a Haeberlin dinner
-- you can eat yourselves fill with both.

IMHO, one has to experience the ease that comes with constraint-based
specification and programming-by-demonstration when one constructs
large user interfaces, and compare it to the hairy callback-based
code with (literally) thousands of unnecessary callbacks. Then,
suddenly, one wants to use Tk only for toy-UIs (those with less than
100 or 200 interaction elements [aka widgets in Tk]).

But back to the topic: Bruno Haible has made available some patches
for Garnet that might make it faster. He wrote that they concern the
hashing code primarly. I must confess I haven't looked at them, but
perhaps somebody else might report their experiences.
    A warning note, though: On a Sparc 10, Allegro CL runs Garnet 10
times faster [!] than CLISP, and even CMUCL is about 6 times faster.
I doubt that CLISP will catch up in this region by changing Lisp
code, one has to add type inference based optimization, more caching
of previous results, and native object code production. (This is not
meant to degrade the fine work of Bruno et.al. I like CLISP a lot and
use it for many of my other developments. -- It simply is not usable
for Garnet.) Remember that Garnet implements its own
prototype-instance based object system -- and every paper of the Self
group shows that such languages needs special techniques to get fast.

Tk is great for many needed GUIs for small tools. If it's sufficient
for your task, use it. But Garnet is really something different, it
targets an other problem domain.


Joachim Schrod			Email: schrod@iti.informatik.th-darmstadt.de
Computer Science Department
Technical University of Darmstadt, Germany