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 fricas-devel+unsubscr...@googlegroups.com.
To post to this group, send email to fricas-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to