I doubt because keyword will use its internal Symbol object to compare with 
each other (or other objects), it means it's Symbol's interned strings(ns & 
name) make the comparison fast but not this caching stuff. I found a 
"find()" method in source code but not sure if the cache is relevant to 
this method.....

在 2012年7月18日星期三UTC+8下午4时52分25秒,dennis写道:
>
> Compare keywords can be very fast.
> 在 2012-7-18 PM4:51,"jaime" <xiejianm...@gmail.com>写道:
>
>> Hello,
>>
>> When I read the source code keyword, say, Keyword.java (V1.3), I found 
>> that when we "intern" a keyword,   (if I understand it correctly)  it uses 
>> a cache for keywords:
>> =============================================
>> public static Keyword intern(Symbol sym) {
>>  if (sym.meta() != null)
>> sym = (Symbol) sym.withMeta(null);
>> *Util.clearCache(rq, table);*
>>  Keyword k = new Keyword(sym);
>> Reference<Keyword> existingRef = table.putIfAbsent(sym,
>>  new WeakReference<Keyword>(k, rq));
>> if (existingRef == null)
>>  return k;
>> Keyword existingk = existingRef.get();
>> if (existingk != null)
>>  return existingk;
>> // entry died in the interim, do over
>> table.remove(sym, existingRef);
>>  return intern(sym);
>> }
>> ==============================================
>>
>> well, I just don't understand why we need caching for keywords. Anyone 
>> could give me a hint?
>>
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to