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

Re: What is a lightweight language



   Date: Thu, 27 Dec 2001 18:15:30 -0000
   From: "Oliver Steele" <steele@cs.brandeis.edu>

			Server-side programming is an environment where a slow
   correct version that can be incrementally replaced by faster components
   written in fuddy-duddy low-level static languages makes both technical and
   economic sense.

Actually, my own experience with server-side programming, once you get
to fairly big and fairly complex servers, is that the real performance
gains are at the level of algorithms and architectural decisions.
Changing from linear searches to hashed searches, reorganizing the
concurrency assumptions so that locking can be at a finer granularity,
avoiding copying by managing sharing more carefully, realizing that in
certain cases one can avoid the need to write a message to persistent
storage, and so on, are where the big opportunities are.  So what's
really important is having code that can be reorganized efficiently
and safely.

It's easy to dismiss what I just said.  After all, that's what you'd
expect someone like me to say, since that kind of architectural change
is fun, whereas recoding inner loops in crummy C/C++ is not fun.  And
everyone knows that all of the really fast software in the world is
written in C/C++.  Well, what can I say?  What I say above is really
based on my experiences.

Certainly there are some exceptions.  Dropping into native code for
the numeric inner-loops of RSA and other crypto algorithms may be
approrpriate.  On the other hand, being able to reorganize things in
order to take advantage of SSL caching is a different way to speed up
the crypto arithmetic; that is, change the architecture so that the
arithmetic needs to be done far fewer many times.