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

compilation, loading, and running times of Oz using CMU CL vs Allegro



I just finished compiling Oz using CMU Common Lisp, in order to
evaluate the performance of CMU Common Lisp for use with Oz.

Versions Used:
	CMU Common Lisp 15b, running on GLINDA.OZ.CS.CMU.EDU
	Hemlock 3.5 (15b), Python 1.0(15b), target SPARCstation/Sun 4

	Allegro CL 4.0.1 [Sun4] (2/8/91)
	Copyright (C) 1985-1991, Franz Inc., Berkeley, CA, USA

	Note: Allegro CL 4.0.1 has native CLOS; CMU Common Lisp uses PCL.

			CMUCL			Allegro
Core Size:		20.2 mb			7.5 mb
Pagingfile usage:	38 mb			20 mb
Compilation Time:	8 hours*		1 hour
Loading Time:		5 hours			21 minutes
Time to run 1 tick**:   7.2 minutes		32 seconds
Consing during 1 tick:	2.9 mb			120 k (1.084 mb other bytes)

* CMUCL failed to compile on GLINDA.OZ, a sparc-1, because it ran out
of paging space and afs cache space. This compilation time is on a
sparc-elc. All other times are on a freshly booted GLINDA.OZ. Note
also that even on a sparc-elc, CMUCL failed to compile lyotard.lisp,
leaving a truncated fasl file. 

** To make the comparison fair, I ran both with lyotard out of the
main loop and with sound turned off. Loading lyotard.lisp is not
feasible in CMUCL.  

Other comments:

	CMUCL seems to cons considerably during get-internal-run-time. 

	During the tick, CMUCL printed out several pages worth of
	compilation messages (notes) related to PCL optimatizations
	such as "Doing MOVE-FROM-SIGNED/UNSIGNED (cost 20) from PCL::REG2."

	The CMUCL Python compiler warnings were useful and informative,
	although in some instances too informative. 

Conclusions:
	
	o  Allegro CL 4.0.1 is about 15 times as fast as CMU CL running
	   Oz on a sparc-1 and has about half the memory requirements.
	   I would guess that a significant portion of the difference
	   in speed is due to the lack of a native CLOS in CMU CL. 

	o  CMU CL's compiler is thorough in the compiler warnings it
	   issues. Many of the warnings for Oz concern unused parameters in
	   methods and undeclared global variables. Oz folk should
	   look through the .err files in the cmucl subdirectories
	   of home, tea and system and fix all compiler warnings in
	   their code.

--mark