In primitives.lisp, (defmacro qcdr (x) `(cdr (the cons ,x)))
In List, QCDR is used almost everywhere except "rest".
In following benchmark, it shows QCDR is 15% slower
than CDR (blist2(10^6) 1.50s vs 1.30s blist1(10^6)), for SBCL.
For ECL, it's same and faster than SBCL: both are
around 0.66s.
)abbrev package BENCH1 Bench1
Bench1() : Exp == Impl where
Exp == with
blist0 : PositiveInteger -> Void
blist1 : PositiveInteger -> Void
blist2 : PositiveInteger -> Void
Impl == add
blist0 N ==
a0 := new(N,1)$List(Integer)
for j in 1..1000 repeat
for i in 1..N repeat rest(a0)
blist1 N ==
a0 := new(N,1)$List(Integer)
for j in 1..1000 repeat
for i in 1..N repeat CDR(a0)$Lisp
blist2 N ==
a0 := new(N,1)$List(Integer)
for j in 1..1000 repeat
for i in 1..N repeat QCDR(a0)$Lisp
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.