Go to the previous, next section.

Efficiency

The builder was written to help compiler writers manipulate small amounts of the input program. The builder was never intended to be an interface to write front ends which generate full programs. Most of the builder design decisions were taken in favor of ease of programming over efficiency.

Execution Efficiency

The builder performs many semantic and syntactic checks on every operation. The builder creates and maintains a large number of shadow structures. When executing, it iterates many times over these shadow structues. For example, parsing the type structues from type strings is very inefficient.

Memory Utilization and Memory Leaks

The builder generates a large number of shadow structures. Since all the building blocks are stored in uniform block structures, builder creates a very large number of these structures. Since the block needs to handle all the possible cases, the structure itself is quite large. There are may places, especially in code generation, where the builder is leaking memory. This problem will be addressed in the next release.

Go to the previous, next section.