memory, but may severely degrade performance on a machine with smaller
physical memory, since program code or other relevant data is displaced by the
array. Metering is essential when using these functions.
Most page-replacement algorithms do not perform well for operations such as the
linear traversal of a long array. A solution is to explicitly control paging during
such operations, with paging control constructs such as
sizscanning-through-memory provided with the 3600. This technique reduces the
displacement of useful pages, and effectively predicts page references, doubling
The 3600 provides the Optimize World command, which
optimizes placement and inter-object references of system objects. This is provided
separately because (1) this is too time-consuming an operation to be done at load-time,
and, (2) it can optimize programs' runtime at the expense of development
operations such as recompilation. Some of these system optimization techniques
are discussed in [Andre 86].
[Andre 86] David L. Andre. Paging in Lisp Programs. Master’s Thesis,
University of Maryland, 1986.
[Cheney 70] C. J. Cheney. A Nonrecursive List Compacting Algorithm.
Communications of the ACM, 13(11):677-678, November 1970.
[Denning 68] Peter J. Denning. The working set model for program behavior.
Communications of the ACM, 21:323-333, May 1968.
[Gabriel 85] Richard P. Gabriel. Performance and Evaluation of Lisp
Systems. The MIT Press, Cambridge, Mass., 1985.
[Moon 84] David A. Moon. Garbage Collection in a Large Lisp System. In
Conference Record of the 1984 ACM Symposium on Lisp and
Functional Programming, pages 235-246, August 1984.
[Symbolics 86] Symbolics Reference Documentation. 10 vols. Symbolics, Inc.,
Cambridge, Mass., 1986.