(질문에 대한 답변 : Fernando Abrao)Clojure에서 트랜스 듀서로 '주파수'를 어떻게 수행 할 수 있습니까?
나는 Clojure에서 트랜스 듀서의 성능 이점에 대해 듣고 있지만 어떻게 사용해야하는지 잘 모르겠습니다. ,
[
{ :samplevalue 1.3, ... },
{ :othervalue -27.7, ... },
{ :samplevalue 7.5, ... },
{ :samplevalue 1.9, ... },
]
내가 각 정수 통에 얼마나 많은 :samplevalue
의 가을을보고 싶습니다
은 내가 지금처럼 소수 :samplevalue
를 포함 일부지도의 순서를 반환하는 qos/device-qos-range
기능을 말해봐 같은 :
(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
에 의해 반환되는 것과 같은) 중간 데이터 구조를 제거 트랜스 듀서와 빠른 버전으로 전환 할 수 있습니까? 병렬 처리를 위해 여러 코어를 활용할 수있는 코드에 대한 보너스 포인트.
두 번째 벤치 마크에서 실행 중에 ConcurrentHashMap을 재사용해야한다고 생각하지 않습니다. – ClojureMostly
@ ClojureMostly - 잘난 척, 고마워! 답변을 업데이트했습니다. 마지막 단락을 참조하십시오. 타이밍은 크게 변하지 않았습니다. –