help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Testing whether a list contains at least one non-nil element


From: Joost Kremers
Subject: Re: Testing whether a list contains at least one non-nil element
Date: Tue, 25 Oct 2022 22:08:29 +0200
User-agent: mu4e 1.8.3; emacs 28.1.91

On Tue, Oct 25 2022, Heime wrote:
> On Tuesday, October 25th, 2022 at 5:25 PM, Joost Kremers
> <joostkremers@fastmail.fm> wrote:
>> (not (seq-every-p #'null mylist))
>
> How does your implementation (not (seq-every-p #'null mylist)) compared to 
>
> (elt (delq nil mylist) 0) 

Not well, it seems:

```
(setq mylist '(nil nil nil nil nil nil nil nil nil t))

(benchmark 100000 '(elt (delq nil mylist) 0))
"Elapsed time: 0.040299s"


(benchmark 100000 '(not (seq-every-p #'null mylist)))
"Elapsed time: 0.470680s (0.187590s in 1 GCs)"



(setq mylist '(nil t nil nil nil nil nil nil nil nil t))

(benchmark 100000 '(elt (delq nil mylist) 0))
"Elapsed time: 0.035235s"


(benchmark 100000 '(not (seq-every-p #'null mylist)))
"Elapsed time: 0.361699s (0.186059s in 1 GCs)"
```

`elt` and `delq` are both implemented in C, while `seq-every-p` is a generic
function, so I guess those results aren't surprising.


-- 
Joost Kremers
Life has its moments



reply via email to

[Prev in Thread] Current Thread [Next in Thread]