[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: status: separation of expansion/optimization/memoization/execution
From: |
Dirk Herrmann |
Subject: |
Re: status: separation of expansion/optimization/memoization/execution |
Date: |
Wed, 14 Aug 2002 21:30:56 +0200 (CEST) |
On 10 Aug 2002, Marius Vollmer wrote:
> So, cleaning up the existing lazy memoizer is a very good thing
> indeed. But I'd say you should also make sure that you don't
> significantly lose performance by doing it. That part of Guile will
> be performance-critical for quite some time.
At the current state I can't decide yet, whether after the changes guile's
speed will at all differ from before. Too many optimizations of the
scheme code are not possible yet, until the separation is complete. If
there is a performance problem then, it will be easier to optimize the
evaluator then. There are, however, a lot of open questions:
* in principle, memoization could memoize all variable references. That
would mean, the execution could be freed of all checks for symbols and
variable lookups - this would have been done by the memoizer.
Benefits:
- no symbol lookups in the executor
- quoted symbols could be made into symbols, getting rid of one level of
quoting
Problems:
- how to deal with undefined symbols?
- should 'undefine' still be possible, and if so, how?
* should the executor ever run over an undefined symbol? This could be
checked during expansion and memoization. If it is known that during
exection all symbols are defined, this eliminates one test during
variable lookup.
Best regards,
Dirk
Re: status: separation of expansion/optimization/memoization/execution, Marius Vollmer, 2002/08/05
Re: status: separation of expansion/optimization/memoization/execution, Marius Vollmer, 2002/08/05
Re: status: separation of expansion/optimization/memoization/execution, Neil Jerram, 2002/08/05