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

equalp of structs - speed



     (defstruct a (a0 0 :type number) (a1 0 :type number))
     (defun a= (a0 a1)
      (and (= (a-a0 a0) (a-a0 a1)) (= (a-a1 a0) (a-a1 a1))))
     
     a= should be the same as equalp (and it seems to be), but equalp is 
     slightly less then twice as fast as a= compiled. One would expect 
     that, since equalp is a built-in, it would be at least 5 times faster 
     than a= (this is the case with home-brewed functions like length etc). 
     So, why is it that the performance win of using equalp instead of a= 
     is so low in CLISP? 
     
     Thanks.