From: Stas B. <sta...@gm...> - 2013-10-03 08:28:25
|
Christophe Rhodes <cs...@ca...> writes: > "stassats" <sta...@us...> writes: > >> + (do () (()) >> + (cond ((eql x y) (return t)) >> + ((and (consp x) >> + (consp y) >> + (eql (pop x) (pop y)))) >> + (t >> + (return))))) > > Is (do () (()) ...) the same as (loop ...)? It is, but seeing other parts not using LOOP, I opted for DO. >> (if rest >> (type-hash-value rest) >> 42) >> - (sxhash allowp)) >> + (if allowp >> + #.(logand #xFF (sxhash t)) >> + #.(logand #xFF (sxhash nil)))) >> #xFF))) > > I haven't looked at the code, but this looks wrong: there's no guarantee > that SXHASH on the host (evaluated at #. read-time) is the same as > SXHASH on the target; the read-time evaluation bakes-in a host value, > and so is going to lead to changed behaviour depending on which host is > used to build. Is this the cause of the speedup you refer to on IRC? > If it is, maybe LOAD-TIME-VALUE works? This part isn't particular slow, but the sxhash itself value isn't important, perhaps a random value can be selected instead, just like the 42 one. -- With best regards, Stas. |