首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将已有的函数应用于新类?

如何将已有的函数应用于新类?
EN

Stack Overflow用户
提问于 2012-06-18 16:20:19
回答 1查看 87关注 0票数 4

在我的项目中,许多客户都会在服务器上修改地图。我使用mapref,如下所示:

代码语言:javascript
复制
(def dict (ref {})) ; the map we play with

我使用dosync,也就是扫描隧道显微镜的方式来更新这个地图。但我发现它并不像我希望的那样快:

代码语言:javascript
复制
user=> (time (dotimes [n 1000000] (dosync ( alter xx assoc xx 1 1))))
"Elapsed time: 2470.766 msecs"

所以我决定使用原生Java来代替CuncurrentHashMap内置的map和STM。如何将Java封装到CuncurrentHashMap中,这样我就可以像修改Clojure map一样,使用assoc、contains?、dissoc等对其进行修改。这将使我修改最少的代码行。

有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-18 16:24:56

您可以使用atom,因为您只需要修改单个值,因此不需要事务,因此也不需要ref

代码语言:javascript
复制
user=> (def dict (atom {}))
user=> (time (dotimes [n 1000000] (swap! dict assoc :xx 1)))
"Elapsed time: 108.105703 msecs"
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11079162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档