[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [AUCTeX-devel] Re: [AUCTeX-diffs] Changes to reftex/lisp/reftex-base
From: |
Ralf Angeli |
Subject: |
Re: [AUCTeX-devel] Re: [AUCTeX-diffs] Changes to reftex/lisp/reftex-base.el, v |
Date: |
Sat, 07 Jun 2008 14:28:33 +0200 |
* David Kastrup (2008-06-07) writes:
> Ralf Angeli <address@hidden> writes:
>
>> +(defun reftex-remove-if (predicate list)
>> + "Nondestructively remove all items from LIST which satisfy PREDICATE."
>> + (let (result)
>> + (dolist (elt list)
>> + (unless (funcall predicate elt)
>> + (add-to-list 'result elt t)))
>> + result))
>> +
>
> No, that's bad. Since it also uniquifies the list. add-to-list is an
> O(n) operation, so this becomes O(n^2).
>
> Try rather
> (let (result)
> (dolist (elt list (nreverse result))
> (unless (funcall predicate elt)
> (push elt result))))
>
> This is O(n).
Thanks. Checked in.
--
Ralf