MOO-cows Mailing List Archive

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

[mbowyer@uk.cv.com: Re: Server Improvement]



------- Start of forwarded message -------
Return-Path: moo-cows-errors@parc.xerox.com
Date: Tue, 18 Mar 1997 04:54:09 PST
From: "Mark R. Bowyer" <mbowyer@uk.cv.com>
Reply-To: "Mark R. Bowyer" <mbowyer@uk.cv.com>
Subject: Re: Server Improvement
To: moo-cows@parc.xerox.com
MIME-Version: 1.0
Content-Type: TEXT/plain; charset=us-ascii
Content-MD5: 2L5z5Y4KV3DMl2IPtbGU0w==
X-Mailer: dtmail 1.2.0 CDE Version 1.2_14 SunOS 5.6 sun4m sparc 
Sender: MOO-Cows-Errors@parc.xerox.com
Precedence: bulk


> From: chris <kirkc6@cs.man.ac.uk>

> What I would like to put up for discussion is the merits of using a array 
> of pointers to functions instead of a switch statement, as this would 
> eleminate the need to perform a integer search.
> The server already uses enumerations in a switch statement, the 
> enumerations are integer codes which signal performing a addition 
> operation or to pop a value from the stack and so forth. If the code for 
> each operation was inserted into a function, and the address of the 
> function stored in a array then the value of the enumeration could be 
> used as a offset to retrieve the address of the function which should be 
> called. Surely a quick sum is quicker to compute than a search of a 
> integer list?
> Do people think that this would result in a significant performance boost?

So you want:

void* (int, int, int, ...) FunctionArray[100];
:
(FunctionArray[command])(arg1, arg2, arg3, ...);

Which would be fine, if every single function you call uses exactly the same 
arguements in the same order in each case.  If not you either have to 
special-case those entries, or build a wrapper function for it.  Plus you have 
to assume they'll all return the same type, and that everything they do that 
differs from all the others will be handled within that function.  Then whenever 
you have to add a new command, you have to go through the whole process of 
generating a matching function, which could heavily restrict it's abilities, or 
recode all the others to match...

It sounds like a good idea, but I have to wonder how much engineering would be 
needed to get even a small increase out of it?  I'd be interested to see what 
the people actually coding the MOO have to say, but I'd assume that this has 
been thought of and set aside for good reason...

TC@MOOtiny / Moredhel

                                 ,,,
/----------------------------o00-----00o------------------------------\
|    o o                        ` _ '          moredhel@earthling.net |
|    /v\ark R. Bowyer.          /   \                                 |
|    `-'                  http://sensemedia.net/sprawl/users/Moredhel |
\---------------------------ooo0-----0ooo-----------------------------/
------- End of forwarded message -------


Home | Subject Index | Thread Index