First of all, let me say that I'm grateful that you're working on improving
"?" while keeping it portable. Some comments in line:
On Wed, Apr 3, 2013 at 2:21 PM, Rupert Swarbrick <rswarbrick at gmail.com>wrote:
> Stavros Macrakis <macrakis at alum.mit.edu> writes:
> ...
> I agree. But I think it's spending its time on a bizarrely slow (on
> CMUCL) regular expression search. This was in the previous code as well,
> th
>
> ough, so maybe it's nothing new on that machine.
>
I find it strange that we're doing any searching at all at runtime -- in
the old code or the new.
> Also, if 3 seconds is "a tad slow, but not terribly slow", I presume
>
> that the machine is pretty much unusably slow at everything else! Ray?
>
I wouldn't presume that a 750Mhz machine would be slow. Maxima was
originally built on a machine roughly equivalent to 1Mhz / 2MB RAM, and
was pretty snappy on short calculations. The core codebase hasn't changed
much since then.
> And I don't understand why building the index at runtime makes any
> > sense at all.
>
> (1) There is no way to portably jump to a given byte of a text stream
> and output the stuff you find there. Guesses based on character
> position or byte position don't work across all the lisps we claim
>
> to support.
>
Well, I can think of several approaches:
1) Developing a way of doing portable random access of text files -- seems
like a pretty basic function. Have we contacted the Lisp implementers
where we have difficulties?
2) Putting each function and each chapter in a different file -- that's <
3000 files, which is no big deal.
3) Reading/writing the doc in binary/integer form so there is no ambiguity.
4) Using a fixed-length encoding like UTF-16.
Approach (2) would seem to be the easiest and most portable.
> (2) The perl script that was compiling stuff was very slow. I was
> recompiling Maxima every couple of minutes to check that my
> changes didn't break things (especially when working on the build
>
> system). Ten seconds each time watching a perl invocation.
>
Most people will either not build at all (Windows and Mac users are
presumably mostly using prebuilt binaries) or build once every few months.
Moving index building to runtime for the comfort of the developer of the
info functionality seems like a poor tradeoff. For that matter, if you've
now developed a Lisp indexer that you think is acceptably fast, why not run
it at build time instead of at run time?
-s