LW 5 vs 6 performance
Hi there, have a look at this function which is supposed give the CPU some load (I used it for SMP testing): (defun test nil (loop repeat 1000 do (dotimes (x 2000000) (* 10 10)))) Nothing strange, right? Not so. After compilation in LW5 the timing function produced the following result: CL-USER 93 > (time (test)) Timing the evaluation of (TEST) User time = 1.294 System time = 0.000 Elapsed time = 1.310 Allocation = 6112 bytes 0 Page faults NIL The compiler output for the function looks like this: ;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 0 ;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3 ;;; Source level debugging is on ;;; Source file recording is on ;;; Cross referencing is on ; (TOP-LEVEL-FORM 1) ; TEST ---- Press space to continue ---- Yet for the LW6 the same compiled function appears to be a lot slower: CL-USER 22 > (time (test)) Timing the evaluation of (TEST) User time = 7.612 System time = 0.000 Elapsed time = 7.620 Allocation = 58676 bytes 0 Page faults NIL This is the compiler output on LW6. The difference is the INTERRUPTIBLE parameter is set to 1, however I was unable to force it to switch to 0 by using DECLARE. ;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 1 ;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3 ;;; Source level debugging is on ;;; Source file recording is on ;;; Cross referencing is on ; TEST ---- Press Space to continue ---- Both of the functions seem to perform at comparable speeds when interpreted, only the fifth reports more allocation. Where do I look?