(问题来源:Fernando Abrao。)
我听说过Clojure中使用转换器的性能优势,但我不知道该如何使用它们。
假设我有一个名为
我听说过Clojure中使用转换器的性能优势,但我不知道该如何使用它们。
假设我有一个名为
qos/device-qos-range
的函数,它返回一系列的映射,其中包含一些十进制的:samplevalue
,例如:[
{ :samplevalue 1.3, ... },
{ :othervalue -27.7, ... },
{ :samplevalue 7.5, ... },
{ :samplevalue 1.9, ... },
]
我想看到每个整数箱中有多少:samplevalue
,例如:
(frequencies
(reduce #(if (not (nil? (:samplevalue %2)))
(conj %1 (.intValue (:samplevalue %2))))
[]
(qos/device-qos-range origem device qos alvo inicio fim)))
;; => {1 2, 7 1}
如何使用转换器将此内容转换为快速版本,以消除中间数据结构(例如reduce
返回的结构)?如果能编写可利用多个核心进行并行处理的代码,则可获得额外加分。