<p>If a fhash provided exactly the same API as a hashtable (which it could) then it is a hashtable, and this improved performance for small numbers of entries ought be a feature of any modern quality implementation.  The only reason it needs a different name is that if the implementation doesn't provide it, there is no portable way to modify the implementation's implementation.</p>

<p>BTW, the implementation probably could do a better job than portable user code at reducing the slight reduced performance for large fhash.</p>
<p>Lisp has called these things hash tables ever since they were invented -- do we need two names for the same thing?  If so, I've got a problem with this "cons" thingus.</p>
<p>Or perhaps I'm just feeling grumpy tonite.</p>
<p>A more serious future issue is that as CL slowly moves towards SMP one of the hairy implementation issues is providing efficient hash tables that are hazard free.  It is really hard to do this in user code without huge efficiency loss. So fhash might be restricted to uses that cannot be shared between threads, unless it's performance improvement were provided by the native implementation.<br>

</p>