Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!asuvax!ncar!elroy.jpl.nasa.gov!jarthur!uunet!stanford.edu!snorkelwacker.mit.edu!ai-lab!zurich.ai.mit.edu!jinx From: jinx@zurich.ai.mit.edu (Guillermo J. Rozas) Newsgroups: comp.lang.scheme Subject: Re: Benchmarking Scheme Message-ID: Date: 3 May 91 20:23:21 GMT References: <1991May2.155838.20830@bronze.ucs.indiana.edu> <1991May3.172024.21889@cs.cmu.edu> Sender: news@ai.mit.edu Reply-To: jinx@zurich.ai.mit.edu Distribution: comp.lang.scheme Organization: M.I.T. Artificial Intelligence Lab. Lines: 34 In-reply-to: ram+@cs.cmu.edu's message of 3 May 91 17:20:24 GMT Well, they may, but they don't have to, as the CMU numbers demonstrate. Common Lisp is pretty much a superset of scheme, modulo call/cc. And I don't see why supporting call/cc should make this program run any slower, since it doesn't use call/cc, and doesn't call any functions that might. How do you know that QUOTIENT or FORMAT (for example) may not error, thereby calling the condition system which may use CALL-WITH-CURRENT-CONTINUATION to construct a condition object to be used if the computation is going to be continued? I think that it is almost impossible to know. Because of this, essentially any potentially assigned variables must be on the heap so that invoking a continuation multiple times will not un-do side effects. You should be able to get reasonable performance in pretty much any Lisp by changing the program to use FIXNUM arithmetic and adding any necessary declarations. CMU CL has an edge here because: -- You don't have to change the program. -- You don't have to add declarations out the wazoo. -- Code runs reasonably fast, even with full type checking. The program that you sent is pretty different from the original, and has 5 different declarations, some pretty arcane (e.g. (declare (type (unsigned-byte 19) quo))). Thus it seems that you changed the program, and that there are declarations up the wazoo, although perhaps less than in other dialects of CL. I like the fact that you don't have to insert THE everywhere, but I still think that this is a far cry from what you seem to imply. Perhaps this is a portable CL program, and not a CMU-CL program. Please explain what you meant.