From e3f36d034a01edde47dfa5df0c9bbd3f2eff125c Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 20 Sep 2009 14:54:17 +0000 Subject: [PATCH] (bookmark-write-file): Avoid calling `pp' with large list, to workaround performance problem (bug#4485). --- lisp/ChangeLog | 13 +++++++++---- lisp/bookmark.el | 7 ++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 40362f6d39c..16eea2af93e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2009-09-20 Thierry Volpiatto + + * bookmark.el (bookmark-write-file): Avoid calling `pp' with large + list, to workaround performance problem (bug#4485). + 2009-09-20 Nick Roberts * progmodes/gud.el (gud-sentinel): Revert indavertant change. @@ -17,8 +22,8 @@ 2009-09-19 Chong Yidong - * emacs-lisp/advice.el (ad-get-argument, ad-set-argument): Doc - fix (Bug#3932). + * emacs-lisp/advice.el (ad-get-argument, ad-set-argument): + Doc fix (Bug#3932). * subr.el (baud-rate): Remove long-obsolete function (Bug#4372). @@ -26,8 +31,8 @@ (time-stamp-dd/mm/yyyy, time-stamp-mon-dd-yyyy) (time-stamp-dd-mon-yy, time-stamp-yy/mm/dd) (time-stamp-yyyy/mm/dd, time-stamp-yyyy-mm-dd) - (time-stamp-yymmdd, time-stamp-hh:mm:ss, time-stamp-hhmm): Remove - functions that have been obsolete since 1995 (Bug#4436). + (time-stamp-yymmdd, time-stamp-hh:mm:ss, time-stamp-hhmm): + Remove functions that have been obsolete since 1995 (Bug#4436). * progmodes/sh-script.el (sh-learn-buffer-indent): Pop to the indent buffer only if called interactively (Bug#4452). diff --git a/lisp/bookmark.el b/lisp/bookmark.el index debfac03140..bd8511cda71 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -1301,7 +1301,12 @@ for a file, defaulting to the file defined by variable (let ((print-length nil) (print-level nil)) (bookmark-insert-file-format-version-stamp) - (pp bookmark-alist (current-buffer)) + (insert "(") + ;; Rather than a single call to `pp' we make one per bookmark. + ;; Apparently `pp' has a poor algorithmic complexity, so this + ;; scales a lot better. bug#4485. + (dolist (i bookmark-alist) (pp i (current-buffer))) + (insert ")") (let ((version-control (cond ((null bookmark-version-control) nil) -- 2.11.4.GIT