Opened 5 years ago

Closed 5 years ago

Last modified 3 years ago

#1220 closed defect (fixed)

FORMAT performance regression (memory usage)

Reported by: mak08 Owned by: gb
Priority: normal Milestone:
Component: Compiler Version: trunk
Keywords: Cc:

Description

When *print-circle* is T, FORMAT uses three times as much memory when printing conses compared to 1.9-r15757 (LinuxX8664), for example:

(defun test () (dotimes (k 100000) (format () "~a" '((a) (b)))))
(time (test))

Runtime is also increased, by ca. 25%

When *print-circle* is nil, the increase in memory usage is even bigger (almost tenfold).

Change History (5)

comment:1 Changed 5 years ago by gb

  • Owner set to gb
  • Status changed from new to assigned

comment:2 Changed 5 years ago by gb

  • Resolution set to fixed
  • Status changed from assigned to closed

(In [16176]) Don't refuse to inline if &REST is present in NX1-LAMBDA-BIND. (We still punt on &LEXPR and &KEY; we could handle &KEY with constant keywords if we really wanted to.)

Handling &REST means that we have to have a mechanism for eliminating it in the backends; failure to handle/ eliminate &REST led to excessive consing in CALL-NEXT-METHOD. This fixes ticket:1220 in the trunk.)

I haven't tested (or even natively compiled) the ARM and PPC backend changes yet.

comment:3 Changed 5 years ago by rme

(In [16180]) Merge from trunk (see ticket:1220)

comment:4 Changed 5 years ago by rme

Thanks for the bug report. The 1.10 release will contain the fix.

comment:5 Changed 3 years ago by rme

  • Milestone Clozure CL 1.10 deleted

Milestone Clozure CL 1.10 deleted

Note: See TracTickets for help on using tickets.