lua-users home
lua-l archive

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


>From jeske@home.chat.net Fri May 15 15:30:25 1998
>
>I think the bigger question to ask is why table operations and tag methods
>are different. Namely, why isn't syntax execution defined as a table
>access, and thus all values would be tables.
>
>For example, "foo(1,2,3)" would trigger the evaluator:
>
>foo.function(1,2,3);
>
>whereas "foo[1]" would trigger the evaluator:
>
>foo.array(1);
>
>and "foo = bar" would trigger the evaluator:
>
>foo.assign(bar);

This is almost exactly what Lua does right now.
You can set tag methods to catch all these.
They are called "function", "gettable", "setglobal", ...

>Perhaps this isn't a good idea, or dosn't buy us much. However, if the
>idea were to unify everything under some concept, I would far sooner think
>the general concept of tables would unify everything, than the
>upvalue/tagmethod concept.

You're right.
The rationale is that whenever you want to do something special, put a
table around the objects you want to handle and set tag methods to catch
the operations done to the objects.
This is what a "meta-mechanism" is all about.

>If I was going to add something to Lua, I'd spend my time trying to do
>some sort of table lookup cache, as currently using multiple levels of
>tables for orginization (either as classes, or just as heirarchy) costs.

Really? Table lookup should take constant time.
Do you have hard data on performance costs? We'd be interested...

>In fact, for this specific reason, I'd like to see the "lookup" VM codes
>dereference a complete table lookup, instead of just one slot. It would be
>much more efficient to come up with a cache method for: 
>
>PUSHTABLE    foo
>TABLELOOKUP  bar.joe.frank
>
>than it is to optimize:
>
>PUSHTABLE foo
>TABLELOOKUP bar
>TABLELOOKUP joe
>TABLELOOKUP frank

That would be something like "with" in Pascal.
Right, this would be slightly more efficient, but like I said, table lookup
should take constant time. So we're tlking about .1 msec vs .3 msec :-)
This is a reasonable suggestion but would require adding a "with" construct.

>Am I wrong in assuming that table lookup is somewhat costly in lua?

Yes. Table lookup should take constant time because it's based on hashing.
What costs did you have in mind?
--lhf