2014-11-10 3 views
0

Мне интересно, какой лучший способ реализовать счетчики производительности в Clojure для конкретной задачи, которая выполняется одновременно.Счетчик производительности для Clojure (с использованием core.async)

я обычно в конечном итоге иметь что-то вроде этого:

(defn -main [& args] 
    (let [c (async/chan)] 
    (doseq [_ (range 50)] 
     (async/thread 
     (async/>!! c 

       (doseq [r (chunk-of-work)] 
       (println r) 
       (doall (pmap #(work %) r)))) 

     ) 
    ) 
    ) 

(while true 
     (async/<!! c)) 
) 
) 

Что бы лучший способ подсчета, сколько сообщений я получаю через канал каждый второй? Код имеет отступы для лучшей читаемости.

ответ

1

Считаете ли вы, что ztellman's Narrator. Это пакет для

«анализа и объединения потоков данных»

Там множество примеров, в том числе один для скорости сообщений в течение определенного периода.

Я на самом деле не использовал его, просто вспомнил, как читал его документы, и он имеет такую ​​структуру агрегации.